acad hispano
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Ejecuta comando en una capa y establece la actual a capa 0

Ir abajo

Ejecuta comando en una capa y establece la actual a capa 0 Empty Ejecuta comando en una capa y establece la actual a capa 0

Mensaje por supertxull el Jue Mar 28, 2019 1:33 pm

Hola a todos, a ver si podéis echarme una mano con esta rutina:
Me gustaría que hiciese la nube de revisión en la capa "_SIM_COMENTARIOS" y al finalizar la orden, se establezca la capa 0 como actual.
¿Es posible?
Código:
(vl-load-com)
(defun C:REVISIONES ()
  (initcommandversion 2)
  (setq acadObj (vlax-get-acad-object))
  (setq doc (vla-get-ActiveDocument acadObj))
  (setq color (vlax-create-object
 (strcat "AutoCAD.AcCmColor."
 (substr (getvar "ACADVER") 1 2)
 )
      )
  )
  (setq layerObj (vla-Add (vla-get-Layers doc) "_SIM_REVISIONES"))
  (vla-put-color layerObj "10")
  (SETVAR "REVCLOUDGRIPS" 1)
  (SETVAR "REVCLOUDCREATEMODE" 0)
  (vla-put-ActiveLayer doc layerObj)
  (setq acadObj (command "._REVCLOUD" "L" "0.5" "0.5" "E" "C"))
  (vla-Regen doc :vlax-true)
  (vlax-release-object color)
  (SETVAR "CLAYER" "0")
)

supertxull

Mensajes : 18
Fecha de inscripción : 21/03/2016

Volver arriba Ir abajo

Ejecuta comando en una capa y establece la actual a capa 0 Empty revisiones ajustado

Mensaje por Admin el Lun Nov 18, 2019 2:42 pm

Código:
(vl-load-com)
(defun REVISIONES ()
  (initcommandversion 2)
  (setq acadObj (vlax-get-acad-object))
  (setq doc (vla-get-ActiveDocument acadObj))
  (setq color (vlax-create-object
 (strcat "AutoCAD.AcCmColor."
 (substr (getvar "ACADVER") 1 2)
 )
      )
  )
  (setq layerObj (vla-Add (vla-get-Layers doc) "_SIM_REVISIONES"))
  (vla-put-color layerObj "10")
  (SETVAR "REVCLOUDGRIPS" 1)
  (SETVAR "REVCLOUDCREATEMODE" 0)
 (setq cloud-min-arc (gETVAR '*REVCLOUDMINARCLENGTH )); guardar arc minimo
  (setq cloud-max-arc  (gETVAR '*REVCLOUDMAXARCLENGTH ));guardar arc max
  (SETVAR '*REVCLOUDMINARCLENGTH 0.5) ; ajustar arc min
  (SETVAR '*REVCLOUDMAXARCLENGTH 0.5);ajustar arc max
  
  (vla-put-ActiveLayer doc layerObj)
  (setq last-ent (entlast))
  (setq acadObj (command "._REVCLOUD"
;;;                         "a" ;para establecer el arco
;;;                         "0.5" "0.5"  
                         "o" ; seleccionar por Objeto
                         last-ent ;el último objeto , lo que pusiste por L
                         "y"; invertir la direccion  
                         ;"0.5" "0.5" ingresadas arriba
                         ;"E" "C"
                         ;; no entiendo que opciones son estas
                         ))
  (vla-Regen doc :vlax-true)
  (vlax-release-object color)
  (SETVAR "CLAYER" "0")
  (SETVAR '*REVCLOUDMINARCLENGTH cloud-min-arc ) ; restablecer arc min
  (SETVAR '*REVCLOUDMAXARCLENGTH cloud-max-arc);restablecer arc max

  
)

(defun c:REVISIONES ()

(revisiones)
  )

Admin
Admin

Mensajes : 216
Fecha de inscripción : 16/03/2016
Edad : 72
Localización : CORDOBA ARGENTINA

https://acadhispano.foroargentina.net

Volver arriba Ir abajo

Ejecuta comando en una capa y establece la actual a capa 0 Empty Re: Ejecuta comando en una capa y establece la actual a capa 0

Mensaje por supertxull el Vie Feb 21, 2020 1:38 pm

Muchas gracias por tu ayuda pero CLAYER se ejecuta antes de dibujar la nube en rojo. Es decir, necesito que la nube se dibuje en capa _SIM_REVISIONES color 10 y después se restablezca a capa 0, color PorCapa.
Estoy haciendo variaciones sobre tu código y no hay manera de controlarlo. Sé que estoy cerca peeeeero, no doy con ello.

supertxull

Mensajes : 18
Fecha de inscripción : 21/03/2016

Volver arriba Ir abajo

Ejecuta comando en una capa y establece la actual a capa 0 Empty Re: Ejecuta comando en una capa y establece la actual a capa 0

Mensaje por Marco Jacinto el Vie Feb 21, 2020 5:03 pm

Yo suelo utilizar una funcion Initerr para recolectar las variables al inicial el comando, y resetf para establecerlas al finalizar, echale un ojo para que veas si te funciona.

Tambien en la llamada al comando, la llamada es en ingles, pero las opciones se las pasas en español.

Hay un comando que envia las xrefs a un layer especifico, estaba en la idea que este comando lo habian ampliado para albergar a los demas objetos del CAD, parece que no es así.


Código:
(vl-load-com)

(or MU:THISDRAWING (vla-get-ActiveDocument (vlax-get-acad-object)))

(DEFUN initerrf (a f / oldcmd ss_imp)

  (SETQ VARLST '()
 temperr *error*
 *error* trapf
  )
 ;_Here the routine will get the name of
 ;_the var and his old value, to later
 ;_stored the one the user wants.
  (IF (LISTP a)
    (PROGN
      (AND (= (LOGAND (GETVAR "undoctl") 8) 8)
   (VLA-ENDUNDOMARK MU:THISDRAWING)
      )
      (VLA-STARTUNDOMARK
 MU:THISDRAWING
      )
      (MAPCAR
 (FUNCTION (LAMBDA (x) ;(setq x (car A))
    (SETQ VARLST
   (CONS (LIST (CAR x) (GETVAR (CAR x))) VARLST)
    )
    (VL-CATCH-ALL-APPLY
      'SETVAR
      (LIST (CAR x)
    (IF (CDR x)
      (CDR x)
      (GETVAR (CAR x))
    )
      )
    )
  )
 )
 a
      )
    )
  )
  (AND f
       (SETQ VARLST (CONS f VARLST))
  )
  VARLST
) ;_ end of defun

(DEFUN trapf (errmsg) ;(setq errmsg "*Cancel*")
  (IF
    (WCMATCH
      (STRCASE errmsg)
      "CONSOLE BREAK,*CANCEL*,FUNCTION CANCELLED,QUIT,EXIT"
    )
     (PRINC "\n *Cancel*: ")
     (PRINC
       (STRCAT "\n " errmsg)
     )
  )
  (resetf)
)


;;; Restores the SETVARs specified in the global VARLST

(DEFUN resetf (/ temperr)
  (IF (AND (> (LENGTH (CAR VARLST)) 2)
   (NOT (VL-CATCH-ALL-ERROR-P
  (VL-CATCH-ALL-APPLY 'EVAL (LIST (CAR VARLST)))
 )
   )
      )
    (SETQ VARLST (CDR VARLST))
  )
  (MAPCAR (FUNCTION
    (LAMBDA (x)
      (VL-CATCH-ALL-APPLY 'SETVAR (LIST (CAR x) (CADR x)))
    )
  )
  VARLST
  )
  (SETQ *error* temperr)
  (VLA-ENDUNDOMARK MU:THISDRAWING)
  (PRINC)
)

(vl-load-com)
(defun C:REVISIONES ()
  (initerrf '(("Clayer" . nil)
      ("REVCLOUDGRIPS" . 1)
      ("*REVCLOUDMINARCLENGTH" . 0.5)
      ("*REVCLOUDMAXARCLENGTH" . 0.5)
      ("REVCLOUDCREATEMODE" . 0)
     )
    nil
  )
  (initcommandversion 2)
  (setq acadObj (vlax-get-acad-object))
  (setq doc (vla-get-ActiveDocument acadObj))
  (setq color (vlax-create-object
 (strcat "AutoCAD.AcCmColor."
 (substr (getvar "ACADVER") 1 2)
 )
      )
  )
  (setq layerObj (vla-Add (vla-get-Layers doc) "_SIM_REVISIONES"))
  (vla-put-color layerObj "10")
  (setvar "clayer" layname)
  (command "._REVCLOUD" "Arc" "0.5" "0.5" "Style" "C")
  (vla-Regen doc :vlax-true)
  (vlax-release-object color)
  (resetf)
)


(defun c:REVISIONES ()

  (revisiones)
)

Marco Jacinto

Mensajes : 74
Fecha de inscripción : 12/08/2016

Volver arriba Ir abajo

Ejecuta comando en una capa y establece la actual a capa 0 Empty Re: Ejecuta comando en una capa y establece la actual a capa 0

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.