Area de polilineas
Moderador: Moderadores
Area de polilineas
Hay algun modo de modificar el area de una polilinea que no sea manualmente???
Si lo hay por dios decidmelo que me estoy volviendo loca modificandola vertice a vertice hasta que cuadre
Si lo hay por dios decidmelo que me estoy volviendo loca modificandola vertice a vertice hasta que cuadre
Re: Area de polilineas
Y para que se utiliza la polilinea en las áreas.anagr escribió:Hay algun modo de modificar el area de una polilinea que no sea manualmente???
Si lo hay por dios decidmelo que me estoy volviendo loca modificandola vertice a vertice hasta que cuadre
Si es para utilizar con macros, es practico..
Hola.. existe la rutina DDAREAR del maestro Dominguez que con designar la polilínea te dice el área y escribe el texto.
http://www.hispacad.com/foro/viewtopic. ... a&start=45
Saludos.
http://www.hispacad.com/foro/viewtopic. ... a&start=45
Saludos.
Y todo esto es practico.. despues como dice anagr se modifica manualmente.. vertice a vertice.. pufff...luisgi escribió:Hola.. existe la rutina DDAREAR del maestro Dominguez que con designar la polilínea te dice el área y escribe el texto.
http://www.hispacad.com/foro/viewtopic. ... a&start=45
Saludos.
A ver que yo me entienda, la rutina que luisgi menciona yo ya la tengo (weno si no es esa es una igual pero me la pasaron con otro nombre) que para cuando tienes que superficiar muchas cosas si, pero no me sirve para modificar el area de la polilinea sin tener que hacerlo manualmente.
De verdad que no existe nada para no tener que hacer malabares cuadrando el area??????
De verdad que no existe nada para no tener que hacer malabares cuadrando el area??????
No te puedo ayudar, se que hay unos comandos que calculan la superficie, seleccionando una polilinea. Pense que esto nadie lo utilizaba. No los veo nada utiles.
Por que cuando tienes que modificar una planta, creo que no interesa, por lo que tu dices, vértice a vértice o volver hacer la polilinea con la orden contorno. Puff que engorro.
Por que cuando tienes que modificar una planta, creo que no interesa, por lo que tu dices, vértice a vértice o volver hacer la polilinea con la orden contorno. Puff que engorro.
-
- En prácticas
- Mensajes: 9
- Registrado: Lun Jul 21, 2008 5:48 pm
- Contactar:
Comentario
Hola, espero que esten muy bien todos los del blogs, la verdad es que escribo solo para comentar que recien estoy utilizando el autoCAD y me cuesta un poco, pero me imagino que pasa al comienzo solo espero superarme y cualquier duda ya se las dire.
Plantillas para páginas webs.
http://www.plantillaspaginaswebs.com
http://www.plantillaspaginaswebs.com
anagr creo que la aplicación lisp que expongo a continuación y que encontré por internet te servirá para lo que necesitas, quizas no en todo, pero seguro que en parte.
La orden que la ejecuta es DIVAREA.
;;; DIVAREA.LSP Land division utility
;;; written by Yorgos Angelopoulos
;;; aggior@panafonet.gr
;;; ------------------------------------
;;; Traducci?n del c?digo original al espa?ol, por Miguel A. L?zaro Mar?n
;;; http://perso.wanadoo.es/lm2ark
;;;
;;; Suponga que usted tiene que dividir una parcela grande de terreno entre
;;; 2, 3, 4,...(?o incluso dividirla entre 5.014!); o bien se desea cortar
;;; una porci?n de 2345 m2 para segregarla de la parcela matriz u original.
;;;
;;; Todo lo que usted necesita es tener dibujada una "polil?nea optimizada"
;;; (entidad "LWPOLYLINE", inclu?da en AutoCAD a partir de su versi?n 14),
;;; que se encuentre CERRADA y que coincida con el per?metro del ?rea total
;;; de la parcela a dividir.
;;;
;;; Cargue la utilidad, despu?s de ponerla en un directorio apropiado, por
;;; ejemplo el C:\Archivos de programa\AutoCAD 2002 Esp\Support, bien sea
;;; invocando el comando _APPLOAD o bien mediante (LOAD "DIVAREA"), y tras
;;; la pertinente carga ejecut?mosla escribiendo DIVAREA en la l?nea de
;;; comandos.
;;;
;;; Conteste a las escasas preguntas que la rutina le ir? formulando y
;;; RECUERDE:
;;;
;;; Cuando le sea solicitado que indique los dos puntos de la l?nea de
;;; divisi?n aproximada inicial, tenga presente lo siguiente:
;;;
;;; 1. Esta L?NEA de DIVISI?N ser? trasladada (en paralelo a la inicial)
;;; o rotada (en funci?n de la opci?n elegida) durante la ejecuci?n de la
;;; rutina, de manera que sus puntos inicial y final que fueron se?alados
;;; para definirla y situarla al inicio deben marcarse teniendo en cuenta
;;; que, durante las aludidas traslaci?n o rotaci?n, no vayan a pasar hacia
;;; el interior del contorno definido por la LWPLYLINE (aunque debe resultar
;;; f?cil superar este inconveniente). Por tanto se aconseja se?alar dichos
;;; puntos iniciales tan LEJANOS HACIA FUERA del per?metro como sea posible
;;; sin exceder, por supuesto, el ?rea actual visible de pantalla.
;;;
;;; En cuanto al punto o polo FIJO, en caso de que se haya preferido la
;;; opci?n "F" en lugar de "P" (direcci?n PARALELA) como respuesta a la
;;; pregunta anterior sobre el modo de generaci?n de la l?nea divisoria,
;;; dicho punto tiene que residir o bien sobre la polil?nea o bien fuera
;;; de ella, nunca dentro de la superficie delimitada a dividir.
;;;
;;; 2. Al indicar el punto sobre la porci?n en donde se obtendr? el ?rea
;;; deseada, habr? que se?alarlo DENTRO de dicha porci?n y ALEJADA de la
;;; l?nea de divisi?n tanto como sea posible, de forma que ese punto no
;;; llegue a quedar fuera de la porci?n que se va obteniendo a medida que
;;; la l?nea divisoria se mueve durante su proceso de c?lculo.
;;;
;;; 3. Finalmente usted tendr? que indicar exactamente de la misma manera
;;; un punto de la porci?n restante: DENTRO de ella y ALEJADA de la l?nea
;;; de divisi?n.
;;;
;;; Si se desea mayor precisi?n de c?lculo en la divisi?n del ?rea, se
;;; pueden disminuir los valores de las variables locales: step1 y step2
;;; proporcionalmente.
;;;
;;;******************LA UTILIDAD COMIENZA AQUI***************************
(DEFUN prerr (s)
(IF (/= s "Function cancelled")
(PRINC (STRCAT "\nError: " s))
) ;end if
(SETQ *error* olderr)
(PRINC)
) ;close defun
(DEFUN C:DIVAREA (/ osm strpf strdc ex arxset arxlst arxon
k scl ok d p1 p2 pts ptb deln
ar par tem stp stp1 stp2
)
(SETQ olderr *error*
*error* prerr
)
(SETQ osm (GETVAR "osmode"))
(SETVAR "osmode" 0)
(SETVAR "cmdecho" 0)
(SETQ ex 0
stp 0.01
stp1 0.005
stp2 0.0005
)
(SETQ arxset (ENTSEL "\nSeleccione una LWPOLYLINE cerrada como perímetro del área a dividir: ") ;_"\nSelect closed LWPOLY to divide: "
arxlst (ENTGET (CAR arxset))
arxon (CDR (ASSOC -1 arxlst))
)
(IF (NOT (AND (EQUAL (CDR (ASSOC 0 arxlst)) "LWPOLYLINE")
(= (CDR (ASSOC 70 arxlst)) 1)
)
)
(PROGN
(PRINC "\nDISCULPE, SOLO SE PERMITEN LWPOLYLINES CERRADAS...") ;_"\nSORRY, ONLY CLOSED LWPOLYLINES ALLOWED..."
(SETQ ex 1)
)
)
(IF (= ex 0)
(PROGN
(COMMAND "_undo" "_m") ;_SI ALGO SALI? MAL, PERMITE DESHACER REGRESANDO AL INICIO - if something goes bad, you may return here
(COMMAND "_layer" "_m" "Area_Division" "")
(COMMAND "_area" "_o" arxon) ;_;;;(command "_area" "e" arxon)
(SETQ ar (GETVAR "area"))
(INITGET "Divide Corta")
(SETQ
strdc (GETKWORD "\nDIVIDE por número de partes o [CORTA una superficie conocida]? (D/C): ") ;_"\nDIVIDE by number or CUT a part ? (D/C) :"
)
(IF (= strdc "Divide")
(PROGN
(SETQ k
(GETREAL "\nIntroduzca número por el que dividir el total: ") ;_"\nEnter number to divide the whole part by : "
)
(SETQ tem (/ ar k))
)
)
(IF (= strdc "Corta")
(SETQ tem
(GETREAL "\nIntroduzca el área a cortar del total (m2): ") ;_"\nEnter area to cut from the whole part (m2) : "
)
)
(INITGET "Paralela Fijo")
(SETQ strpf (GETKWORD
"\nL?nea de corte PARALELA a una dirección o [por un polo FIJO]? (P/F) :" ;_"\nPARALLEL to a direction or FIXED side? (P/F) :"
)
)
(IF (= strpf "Fijo")
(fixpt)
)
(IF (= strpf "Paralela")
(parpt)
)
(ready)
)
(ready)
)
)
;;;******************************************************************************
(DEFUN fixpt ()
(SETVAR "osmode" osm)
(SETQ scl 0.05
p1 (GETPOINT "\nSeñale el polo fijo por el que pasará la línea de división: ") ;_"\nPick fixed point of the division line : "
p2 (GETPOINT "\nSeñale el segundo punto inicial de la línea de división: ") ;_"\nPick second point of division line: "
)
(SETVAR "osmode" 0)
(COMMAND "_line" p1 p2 "")
(SETQ deln (ENTLAST))
(SETQ pts
(GETPOINT
"\nEscoja un punto DENTRO de la porción a obtener y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into FIRST piece, FAR from division line: "
)
(SETQ ptb
(GETPOINT
"\nEscoja cualquier punto del RESTO del área y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into the REST of the piece, FAR from division line: "
)
(SETVAR "blipmode" 0)
(PRINC "\nPor favor, espere...") ;_"\nPlease wait..."
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
(SETQ ok -1)
(IF (< par tem)
(PROGN
(WHILE (< par tem)
(ENTDEL (ENTLAST))
(IF (< (- tem par) 50)
(SETQ scl stp)
)
(IF (< (- tem par) 10)
(SETQ scl stp2)
)
(COMMAND "_rotate" deln "" p1 (* scl ok))
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(IF (</color> par tem)
(ENTDEL (ENTLAST))
(IF (< (- par tem) 50)
(SETQ scl stp)
)
(IF (</color> (GETVAR "area") par)
(SETQ ok (* ok -1))
)
(SETQ par (GETVAR "area"))
) ;endwhile
(ENTDEL deln)
)
)
(COMMAND "_change" "_l" "" "_p" "_c" "_green" "")
(COMMAND "_boundary" ptb "")
(COMMAND "_change" "_l" "" "_p" "_c" "_red" "")
(ready)
)
;;;******************************************************************************
(DEFUN parpt ()
(SETVAR "osmode" osm)
(SETQ scl 0.25
p1 (GETPOINT
"\nSeñale un punto de la línea divisoria (alejado de la LWPOLYLINE): "
) ;_"\nPick one point of division line (far from lwpoly) : "
p2 (GETPOINT
"\nSeñale otro punto de la línea divisoria (alejado de la LWPOLYLINE): "
) ;_"\nPick other point of division line (far from lwpoly) : "
)
(SETVAR "osmode" 0)
(COMMAND "_line" p1 p2 "")
(SETQ deln (ENTLAST))
(SETQ pts
(GETPOINT
"\nEscoja un punto DENTRO de la porción a obtener y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into FIRST piece, FAR from division line: "
)
(SETQ ptb
(GETPOINT
"\nEscoja cualquier punto del RESTO del área y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into the REST of the piece, FAR from division line: "
)
(SETVAR "blipmode" 0)
(PRINC "\nPor favor, espere...") ;_"\nPlease wait..."
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
(IF (< par tem)
(PROGN
(WHILE (< par tem)
(ENTDEL (ENTLAST))
(IF (< (- tem par) 50)
(SETQ scl stp1)
)
(IF (</color> par tem)
(ENTDEL (ENTLAST))
(IF (< (- par tem) 50)
(SETQ scl stp1)
)
(IF (< (- par tem) 10)
(SETQ scl stp2)
)
(COMMAND "_offset" scl deln pts "") ;_
(ENTDEL deln)
(SETQ deln (ENTLAST))
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
)
(ENTDEL deln)
)
)
(COMMAND "_change" "_l" "" "_p" "_c" "_green" "")
(COMMAND "_boundary" ptb "")
(COMMAND "_change" "_l" "" "_p" "_c" "_red" "")
)
;;;******************************************************************************
(DEFUN ready ()
(PRINC scl)
(PRINC "\nObtenido : ")
(PRINC par)
(PRINC "\nDeb?a ser: ") ;_"\nMust be: "
(PRINC tem)
(SETQ *error* olderr)
(SETVAR "osmode" osm)
(SETVAR "cmdecho" 1)
(SETVAR "blipmode" 1)
(PRINC "\nGracias...") ;_"\nThanks..."
(PRINC)
) ;close defu
P.D.: emercadotecnia2a seas bienvenido, pero por favor leete las normas del foro, y no mezclemos los temas que se tratan, ni tratar de repertirlos. Puedes presentarte en el post de off topic como han hecho otros usuarios. Gracias y bienvenido nuevamente.
La orden que la ejecuta es DIVAREA.
;;; DIVAREA.LSP Land division utility
;;; written by Yorgos Angelopoulos
;;; aggior@panafonet.gr
;;; ------------------------------------
;;; Traducci?n del c?digo original al espa?ol, por Miguel A. L?zaro Mar?n
;;; http://perso.wanadoo.es/lm2ark
;;;
;;; Suponga que usted tiene que dividir una parcela grande de terreno entre
;;; 2, 3, 4,...(?o incluso dividirla entre 5.014!); o bien se desea cortar
;;; una porci?n de 2345 m2 para segregarla de la parcela matriz u original.
;;;
;;; Todo lo que usted necesita es tener dibujada una "polil?nea optimizada"
;;; (entidad "LWPOLYLINE", inclu?da en AutoCAD a partir de su versi?n 14),
;;; que se encuentre CERRADA y que coincida con el per?metro del ?rea total
;;; de la parcela a dividir.
;;;
;;; Cargue la utilidad, despu?s de ponerla en un directorio apropiado, por
;;; ejemplo el C:\Archivos de programa\AutoCAD 2002 Esp\Support, bien sea
;;; invocando el comando _APPLOAD o bien mediante (LOAD "DIVAREA"), y tras
;;; la pertinente carga ejecut?mosla escribiendo DIVAREA en la l?nea de
;;; comandos.
;;;
;;; Conteste a las escasas preguntas que la rutina le ir? formulando y
;;; RECUERDE:
;;;
;;; Cuando le sea solicitado que indique los dos puntos de la l?nea de
;;; divisi?n aproximada inicial, tenga presente lo siguiente:
;;;
;;; 1. Esta L?NEA de DIVISI?N ser? trasladada (en paralelo a la inicial)
;;; o rotada (en funci?n de la opci?n elegida) durante la ejecuci?n de la
;;; rutina, de manera que sus puntos inicial y final que fueron se?alados
;;; para definirla y situarla al inicio deben marcarse teniendo en cuenta
;;; que, durante las aludidas traslaci?n o rotaci?n, no vayan a pasar hacia
;;; el interior del contorno definido por la LWPLYLINE (aunque debe resultar
;;; f?cil superar este inconveniente). Por tanto se aconseja se?alar dichos
;;; puntos iniciales tan LEJANOS HACIA FUERA del per?metro como sea posible
;;; sin exceder, por supuesto, el ?rea actual visible de pantalla.
;;;
;;; En cuanto al punto o polo FIJO, en caso de que se haya preferido la
;;; opci?n "F" en lugar de "P" (direcci?n PARALELA) como respuesta a la
;;; pregunta anterior sobre el modo de generaci?n de la l?nea divisoria,
;;; dicho punto tiene que residir o bien sobre la polil?nea o bien fuera
;;; de ella, nunca dentro de la superficie delimitada a dividir.
;;;
;;; 2. Al indicar el punto sobre la porci?n en donde se obtendr? el ?rea
;;; deseada, habr? que se?alarlo DENTRO de dicha porci?n y ALEJADA de la
;;; l?nea de divisi?n tanto como sea posible, de forma que ese punto no
;;; llegue a quedar fuera de la porci?n que se va obteniendo a medida que
;;; la l?nea divisoria se mueve durante su proceso de c?lculo.
;;;
;;; 3. Finalmente usted tendr? que indicar exactamente de la misma manera
;;; un punto de la porci?n restante: DENTRO de ella y ALEJADA de la l?nea
;;; de divisi?n.
;;;
;;; Si se desea mayor precisi?n de c?lculo en la divisi?n del ?rea, se
;;; pueden disminuir los valores de las variables locales: step1 y step2
;;; proporcionalmente.
;;;
;;;******************LA UTILIDAD COMIENZA AQUI***************************
(DEFUN prerr (s)
(IF (/= s "Function cancelled")
(PRINC (STRCAT "\nError: " s))
) ;end if
(SETQ *error* olderr)
(PRINC)
) ;close defun
(DEFUN C:DIVAREA (/ osm strpf strdc ex arxset arxlst arxon
k scl ok d p1 p2 pts ptb deln
ar par tem stp stp1 stp2
)
(SETQ olderr *error*
*error* prerr
)
(SETQ osm (GETVAR "osmode"))
(SETVAR "osmode" 0)
(SETVAR "cmdecho" 0)
(SETQ ex 0
stp 0.01
stp1 0.005
stp2 0.0005
)
(SETQ arxset (ENTSEL "\nSeleccione una LWPOLYLINE cerrada como perímetro del área a dividir: ") ;_"\nSelect closed LWPOLY to divide: "
arxlst (ENTGET (CAR arxset))
arxon (CDR (ASSOC -1 arxlst))
)
(IF (NOT (AND (EQUAL (CDR (ASSOC 0 arxlst)) "LWPOLYLINE")
(= (CDR (ASSOC 70 arxlst)) 1)
)
)
(PROGN
(PRINC "\nDISCULPE, SOLO SE PERMITEN LWPOLYLINES CERRADAS...") ;_"\nSORRY, ONLY CLOSED LWPOLYLINES ALLOWED..."
(SETQ ex 1)
)
)
(IF (= ex 0)
(PROGN
(COMMAND "_undo" "_m") ;_SI ALGO SALI? MAL, PERMITE DESHACER REGRESANDO AL INICIO - if something goes bad, you may return here
(COMMAND "_layer" "_m" "Area_Division" "")
(COMMAND "_area" "_o" arxon) ;_;;;(command "_area" "e" arxon)
(SETQ ar (GETVAR "area"))
(INITGET "Divide Corta")
(SETQ
strdc (GETKWORD "\nDIVIDE por número de partes o [CORTA una superficie conocida]? (D/C): ") ;_"\nDIVIDE by number or CUT a part ? (D/C) :"
)
(IF (= strdc "Divide")
(PROGN
(SETQ k
(GETREAL "\nIntroduzca número por el que dividir el total: ") ;_"\nEnter number to divide the whole part by : "
)
(SETQ tem (/ ar k))
)
)
(IF (= strdc "Corta")
(SETQ tem
(GETREAL "\nIntroduzca el área a cortar del total (m2): ") ;_"\nEnter area to cut from the whole part (m2) : "
)
)
(INITGET "Paralela Fijo")
(SETQ strpf (GETKWORD
"\nL?nea de corte PARALELA a una dirección o [por un polo FIJO]? (P/F) :" ;_"\nPARALLEL to a direction or FIXED side? (P/F) :"
)
)
(IF (= strpf "Fijo")
(fixpt)
)
(IF (= strpf "Paralela")
(parpt)
)
(ready)
)
(ready)
)
)
;;;******************************************************************************
(DEFUN fixpt ()
(SETVAR "osmode" osm)
(SETQ scl 0.05
p1 (GETPOINT "\nSeñale el polo fijo por el que pasará la línea de división: ") ;_"\nPick fixed point of the division line : "
p2 (GETPOINT "\nSeñale el segundo punto inicial de la línea de división: ") ;_"\nPick second point of division line: "
)
(SETVAR "osmode" 0)
(COMMAND "_line" p1 p2 "")
(SETQ deln (ENTLAST))
(SETQ pts
(GETPOINT
"\nEscoja un punto DENTRO de la porción a obtener y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into FIRST piece, FAR from division line: "
)
(SETQ ptb
(GETPOINT
"\nEscoja cualquier punto del RESTO del área y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into the REST of the piece, FAR from division line: "
)
(SETVAR "blipmode" 0)
(PRINC "\nPor favor, espere...") ;_"\nPlease wait..."
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
(SETQ ok -1)
(IF (< par tem)
(PROGN
(WHILE (< par tem)
(ENTDEL (ENTLAST))
(IF (< (- tem par) 50)
(SETQ scl stp)
)
(IF (< (- tem par) 10)
(SETQ scl stp2)
)
(COMMAND "_rotate" deln "" p1 (* scl ok))
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(IF (</color> par tem)
(ENTDEL (ENTLAST))
(IF (< (- par tem) 50)
(SETQ scl stp)
)
(IF (</color> (GETVAR "area") par)
(SETQ ok (* ok -1))
)
(SETQ par (GETVAR "area"))
) ;endwhile
(ENTDEL deln)
)
)
(COMMAND "_change" "_l" "" "_p" "_c" "_green" "")
(COMMAND "_boundary" ptb "")
(COMMAND "_change" "_l" "" "_p" "_c" "_red" "")
(ready)
)
;;;******************************************************************************
(DEFUN parpt ()
(SETVAR "osmode" osm)
(SETQ scl 0.25
p1 (GETPOINT
"\nSeñale un punto de la línea divisoria (alejado de la LWPOLYLINE): "
) ;_"\nPick one point of division line (far from lwpoly) : "
p2 (GETPOINT
"\nSeñale otro punto de la línea divisoria (alejado de la LWPOLYLINE): "
) ;_"\nPick other point of division line (far from lwpoly) : "
)
(SETVAR "osmode" 0)
(COMMAND "_line" p1 p2 "")
(SETQ deln (ENTLAST))
(SETQ pts
(GETPOINT
"\nEscoja un punto DENTRO de la porción a obtener y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into FIRST piece, FAR from division line: "
)
(SETQ ptb
(GETPOINT
"\nEscoja cualquier punto del RESTO del área y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into the REST of the piece, FAR from division line: "
)
(SETVAR "blipmode" 0)
(PRINC "\nPor favor, espere...") ;_"\nPlease wait..."
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
(IF (< par tem)
(PROGN
(WHILE (< par tem)
(ENTDEL (ENTLAST))
(IF (< (- tem par) 50)
(SETQ scl stp1)
)
(IF (</color> par tem)
(ENTDEL (ENTLAST))
(IF (< (- par tem) 50)
(SETQ scl stp1)
)
(IF (< (- par tem) 10)
(SETQ scl stp2)
)
(COMMAND "_offset" scl deln pts "") ;_
(ENTDEL deln)
(SETQ deln (ENTLAST))
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
)
(ENTDEL deln)
)
)
(COMMAND "_change" "_l" "" "_p" "_c" "_green" "")
(COMMAND "_boundary" ptb "")
(COMMAND "_change" "_l" "" "_p" "_c" "_red" "")
)
;;;******************************************************************************
(DEFUN ready ()
(PRINC scl)
(PRINC "\nObtenido : ")
(PRINC par)
(PRINC "\nDeb?a ser: ") ;_"\nMust be: "
(PRINC tem)
(SETQ *error* olderr)
(SETVAR "osmode" osm)
(SETVAR "cmdecho" 1)
(SETVAR "blipmode" 1)
(PRINC "\nGracias...") ;_"\nThanks..."
(PRINC)
) ;close defu
P.D.: emercadotecnia2a seas bienvenido, pero por favor leete las normas del foro, y no mezclemos los temas que se tratan, ni tratar de repertirlos. Puedes presentarte en el post de off topic como han hecho otros usuarios. Gracias y bienvenido nuevamente.
Hola de nuevo..
encontré esto:
http://www.hispacad.com/foro/viewtopic. ... ficar+area
que creo que es más o menos lo que quieres, lo que pasa es que tienes que saber el factor de escala existente entre una superficie y otra, con saber esto, cargas la rutina, te pregunta el factor de escala, seleccionas la polilínea y te crea la nueva superficie.
Suerte.
encontré esto:
http://www.hispacad.com/foro/viewtopic. ... ficar+area
que creo que es más o menos lo que quieres, lo que pasa es que tienes que saber el factor de escala existente entre una superficie y otra, con saber esto, cargas la rutina, te pregunta el factor de escala, seleccionas la polilínea y te crea la nueva superficie.
Suerte.
Bueno, puede que parezca algo torpe (si es asi lo tengo asumido) pero ya puestos si me explicas que tengo que hacer con todo esto que has puesto ahi me haces una reinaAfga escribió:anagr creo que la aplicación lisp que expongo a continuación y que encontré por internet te servirá para lo que necesitas, quizas no en todo, pero seguro que en parte.
La orden que la ejecuta es DIVAREA.
;;; DIVAREA.LSP Land division utility
;;; written by Yorgos Angelopoulos
;;; aggior@panafonet.gr
;;; ------------------------------------
;;; Traducci?n del c?digo original al espa?ol, por Miguel A. L?zaro Mar?n
;;; http://perso.wanadoo.es/lm2ark
;;;
;;; Suponga que usted tiene que dividir una parcela grande de terreno entre
;;; 2, 3, 4,...(?o incluso dividirla entre 5.014!); o bien se desea cortar
;;; una porci?n de 2345 m2 para segregarla de la parcela matriz u original.
;;;
;;; Todo lo que usted necesita es tener dibujada una "polil?nea optimizada"
;;; (entidad "LWPOLYLINE", inclu?da en AutoCAD a partir de su versi?n 14),
;;; que se encuentre CERRADA y que coincida con el per?metro del ?rea total
;;; de la parcela a dividir.
;;;
;;; Cargue la utilidad, despu?s de ponerla en un directorio apropiado, por
;;; ejemplo el C:\Archivos de programa\AutoCAD 2002 Esp\Support, bien sea
;;; invocando el comando _APPLOAD o bien mediante (LOAD "DIVAREA"), y tras
;;; la pertinente carga ejecut?mosla escribiendo DIVAREA en la l?nea de
;;; comandos.
;;;
;;; Conteste a las escasas preguntas que la rutina le ir? formulando y
;;; RECUERDE:
;;;
;;; Cuando le sea solicitado que indique los dos puntos de la l?nea de
;;; divisi?n aproximada inicial, tenga presente lo siguiente:
;;;
;;; 1. Esta L?NEA de DIVISI?N ser? trasladada (en paralelo a la inicial)
;;; o rotada (en funci?n de la opci?n elegida) durante la ejecuci?n de la
;;; rutina, de manera que sus puntos inicial y final que fueron se?alados
;;; para definirla y situarla al inicio deben marcarse teniendo en cuenta
;;; que, durante las aludidas traslaci?n o rotaci?n, no vayan a pasar hacia
;;; el interior del contorno definido por la LWPLYLINE (aunque debe resultar
;;; f?cil superar este inconveniente). Por tanto se aconseja se?alar dichos
;;; puntos iniciales tan LEJANOS HACIA FUERA del per?metro como sea posible
;;; sin exceder, por supuesto, el ?rea actual visible de pantalla.
;;;
;;; En cuanto al punto o polo FIJO, en caso de que se haya preferido la
;;; opci?n "F" en lugar de "P" (direcci?n PARALELA) como respuesta a la
;;; pregunta anterior sobre el modo de generaci?n de la l?nea divisoria,
;;; dicho punto tiene que residir o bien sobre la polil?nea o bien fuera
;;; de ella, nunca dentro de la superficie delimitada a dividir.
;;;
;;; 2. Al indicar el punto sobre la porci?n en donde se obtendr? el ?rea
;;; deseada, habr? que se?alarlo DENTRO de dicha porci?n y ALEJADA de la
;;; l?nea de divisi?n tanto como sea posible, de forma que ese punto no
;;; llegue a quedar fuera de la porci?n que se va obteniendo a medida que
;;; la l?nea divisoria se mueve durante su proceso de c?lculo.
;;;
;;; 3. Finalmente usted tendr? que indicar exactamente de la misma manera
;;; un punto de la porci?n restante: DENTRO de ella y ALEJADA de la l?nea
;;; de divisi?n.
;;;
;;; Si se desea mayor precisi?n de c?lculo en la divisi?n del ?rea, se
;;; pueden disminuir los valores de las variables locales: step1 y step2
;;; proporcionalmente.
;;;
;;;******************LA UTILIDAD COMIENZA AQUI***************************
(DEFUN prerr (s)
(IF (/= s "Function cancelled")
(PRINC (STRCAT "\nError: " s))
) ;end if
(SETQ *error* olderr)
(PRINC)
) ;close defun
(DEFUN C:DIVAREA (/ osm strpf strdc ex arxset arxlst arxon
k scl ok d p1 p2 pts ptb deln
ar par tem stp stp1 stp2
)
(SETQ olderr *error*
*error* prerr
)
(SETQ osm (GETVAR "osmode"))
(SETVAR "osmode" 0)
(SETVAR "cmdecho" 0)
(SETQ ex 0
stp 0.01
stp1 0.005
stp2 0.0005
)
(SETQ arxset (ENTSEL "\nSeleccione una LWPOLYLINE cerrada como perímetro del área a dividir: ") ;_"\nSelect closed LWPOLY to divide: "
arxlst (ENTGET (CAR arxset))
arxon (CDR (ASSOC -1 arxlst))
)
(IF (NOT (AND (EQUAL (CDR (ASSOC 0 arxlst)) "LWPOLYLINE")
(= (CDR (ASSOC 70 arxlst)) 1)
)
)
(PROGN
(PRINC "\nDISCULPE, SOLO SE PERMITEN LWPOLYLINES CERRADAS...") ;_"\nSORRY, ONLY CLOSED LWPOLYLINES ALLOWED..."
(SETQ ex 1)
)
)
(IF (= ex 0)
(PROGN
(COMMAND "_undo" "_m") ;_SI ALGO SALI? MAL, PERMITE DESHACER REGRESANDO AL INICIO - if something goes bad, you may return here
(COMMAND "_layer" "_m" "Area_Division" "")
(COMMAND "_area" "_o" arxon) ;_;;;(command "_area" "e" arxon)
(SETQ ar (GETVAR "area"))
(INITGET "Divide Corta")
(SETQ
strdc (GETKWORD "\nDIVIDE por número de partes o [CORTA una superficie conocida]? (D/C): ") ;_"\nDIVIDE by number or CUT a part ? (D/C) :"
)
(IF (= strdc "Divide")
(PROGN
(SETQ k
(GETREAL "\nIntroduzca número por el que dividir el total: ") ;_"\nEnter number to divide the whole part by : "
)
(SETQ tem (/ ar k))
)
)
(IF (= strdc "Corta")
(SETQ tem
(GETREAL "\nIntroduzca el área a cortar del total (m2): ") ;_"\nEnter area to cut from the whole part (m2) : "
)
)
(INITGET "Paralela Fijo")
(SETQ strpf (GETKWORD
"\nL?nea de corte PARALELA a una dirección o [por un polo FIJO]? (P/F) :" ;_"\nPARALLEL to a direction or FIXED side? (P/F) :"
)
)
(IF (= strpf "Fijo")
(fixpt)
)
(IF (= strpf "Paralela")
(parpt)
)
(ready)
)
(ready)
)
)
;;;******************************************************************************
(DEFUN fixpt ()
(SETVAR "osmode" osm)
(SETQ scl 0.05
p1 (GETPOINT "\nSeñale el polo fijo por el que pasará la línea de división: ") ;_"\nPick fixed point of the division line : "
p2 (GETPOINT "\nSeñale el segundo punto inicial de la línea de división: ") ;_"\nPick second point of division line: "
)
(SETVAR "osmode" 0)
(COMMAND "_line" p1 p2 "")
(SETQ deln (ENTLAST))
(SETQ pts
(GETPOINT
"\nEscoja un punto DENTRO de la porción a obtener y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into FIRST piece, FAR from division line: "
)
(SETQ ptb
(GETPOINT
"\nEscoja cualquier punto del RESTO del área y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into the REST of the piece, FAR from division line: "
)
(SETVAR "blipmode" 0)
(PRINC "\nPor favor, espere...") ;_"\nPlease wait..."
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
(SETQ ok -1)
(IF (< par tem)
(PROGN
(WHILE (< par tem)
(ENTDEL (ENTLAST))
(IF (< (- tem par) 50)
(SETQ scl stp)
)
(IF (< (- tem par) 10)
(SETQ scl stp2)
)
(COMMAND "_rotate" deln "" p1 (* scl ok))
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(IF (</color> par tem)
(ENTDEL (ENTLAST))
(IF (< (- par tem) 50)
(SETQ scl stp)
)
(IF (</color> (GETVAR "area") par)
(SETQ ok (* ok -1))
)
(SETQ par (GETVAR "area"))
) ;endwhile
(ENTDEL deln)
)
)
(COMMAND "_change" "_l" "" "_p" "_c" "_green" "")
(COMMAND "_boundary" ptb "")
(COMMAND "_change" "_l" "" "_p" "_c" "_red" "")
(ready)
)
;;;******************************************************************************
(DEFUN parpt ()
(SETVAR "osmode" osm)
(SETQ scl 0.25
p1 (GETPOINT
"\nSeñale un punto de la línea divisoria (alejado de la LWPOLYLINE): "
) ;_"\nPick one point of division line (far from lwpoly) : "
p2 (GETPOINT
"\nSeñale otro punto de la línea divisoria (alejado de la LWPOLYLINE): "
) ;_"\nPick other point of division line (far from lwpoly) : "
)
(SETVAR "osmode" 0)
(COMMAND "_line" p1 p2 "")
(SETQ deln (ENTLAST))
(SETQ pts
(GETPOINT
"\nEscoja un punto DENTRO de la porción a obtener y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into FIRST piece, FAR from division line: "
)
(SETQ ptb
(GETPOINT
"\nEscoja cualquier punto del RESTO del área y ALEJADO de la línea divisoria: "
) ;_"\nPick any point into the REST of the piece, FAR from division line: "
)
(SETVAR "blipmode" 0)
(PRINC "\nPor favor, espere...") ;_"\nPlease wait..."
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
(IF (< par tem)
(PROGN
(WHILE (< par tem)
(ENTDEL (ENTLAST))
(IF (< (- tem par) 50)
(SETQ scl stp1)
)
(IF (</color> par tem)
(ENTDEL (ENTLAST))
(IF (< (- par tem) 50)
(SETQ scl stp1)
)
(IF (< (- par tem) 10)
(SETQ scl stp2)
)
(COMMAND "_offset" scl deln pts "") ;_
(ENTDEL deln)
(SETQ deln (ENTLAST))
(COMMAND "_boundary" pts "")
(COMMAND "_area" "_o" "_l") ;_;;;(command "_area" "e" "l")
(SETQ par (GETVAR "area"))
)
(ENTDEL deln)
)
)
(COMMAND "_change" "_l" "" "_p" "_c" "_green" "")
(COMMAND "_boundary" ptb "")
(COMMAND "_change" "_l" "" "_p" "_c" "_red" "")
)
;;;******************************************************************************
(DEFUN ready ()
(PRINC scl)
(PRINC "\nObtenido : ")
(PRINC par)
(PRINC "\nDeb?a ser: ") ;_"\nMust be: "
(PRINC tem)
(SETQ *error* olderr)
(SETVAR "osmode" osm)
(SETVAR "cmdecho" 1)
(SETVAR "blipmode" 1)
(PRINC "\nGracias...") ;_"\nThanks..."
(PRINC)
) ;close defu
P.D.: emercadotecnia2a seas bienvenido, pero por favor leete las normas del foro, y no mezclemos los temas que se tratan, ni tratar de repertirlos. Puedes presentarte en el post de off topic como han hecho otros usuarios. Gracias y bienvenido nuevamente.
Anagr, lo que he expuesto es una aplicación lisp, es decir, un pequeño programa para divir polilineas en areas y subdivisiones concretas.
Para usarla y ejecutarla, leete lo que ya se explico de como hacerlo en el siguiente enlace;
http://foro.delineacion.org/viewtopic.php?t=346
Saludos
Para usarla y ejecutarla, leete lo que ya se explico de como hacerlo en el siguiente enlace;
http://foro.delineacion.org/viewtopic.php?t=346
Saludos
Muchas gracias. Me pongo con ello ahora y ya os comentare que tal me ha idoAfga escribió:Anagr, lo que he expuesto es una aplicación lisp, es decir, un pequeño programa para divir polilineas en areas y subdivisiones concretas.
Para usarla y ejecutarla, leete lo que ya se explico de como hacerlo en el siguiente enlace;
http://foro.delineacion.org/viewtopic.php?t=346
Saludos
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 12 invitados