Você criou trocentos perfis, alguns de terreno, outros são os grades e outros são os superimposeds.... certo, mas os estilos estão todos bagunçados? que tal padronizar isso? cada tipo de perfil num estilo? veja a lisp abaixo:
Para usar, digite o nome da rotina na linha de comando após carregar ela. Ah, claro, só irá funcionar para os perfis efetivamente desenhados nas profileviews, e sim, é preciso copiar as subrotinas também.
ver a bendita...
salve o dcl:
setperfstyle :dialog {label = "Ajustar Estilos dos perfis";
:popup_list {label = "Terreno" ; key = "terreno"; }
:popup_list {label = "Grade" ; key = "grade"; }
:popup_list {label = "Super Imposed" ; key = "superimposed"; }
:text {label="Powered by Neyton®";}
:row{
:button {key = "cncl"; is_cancel = true; label = "melhor dêxa"; }
:button {key = "ok"; is_default = true; label = "é muda aí!!"; }}
}
salve a lisp:
(setq setperfstyle:Terreno "Terreno"
setperfstyle:grade "Grade"
setperfstyle:superimposed "Super")
(defun c:setperfstyle (/ ss ent vla sty acao modes terreno grade superimposed lsty dcl)
(tbn:error-init nil)
(if (setq ss (ssget '((0 . "AECC_PROFILE"))))
(progn
(vlax-for tmp (cvlp-get-LandProfileStyles aec-adoc)
(setq sty (cons (list (cvlp-get-name tmp)
(vla-get-layer (cvlp-get-LineDisplayStyle2d tmp)))
sty)))
(setq dcl (load_dialog "setperfstyle.dcl")
lsty (mapcar 'car sty)
modes (lambda nil (mode_tile "ok" (if (and terreno grade superimposed) 0 1)))
acao (lambda (key val)
(set (read key) (nth (atoi val) lsty))
(modes)))
(new_dialog "setperfstyle" dcl )
(multi_set_action_tile
'("terreno""grade" "superimposed")
(list (list setperfstyle:Terreno lsty "terreno")
(list setperfstyle:grade lsty "grade")
(list setperfstyle:superimposed lsty "superimposed"))
"(acao $key $value)")
(if (= 1 (start_dialog))
(progn
(setq setperfstyle:Terreno Terreno
setperfstyle:Grade Grade
setperfstyle:Superimposed Superimposed)
(repeat (if ss (sslength ss) 0)
(setq ent (ssname ss 0)
vla (vlax-ename->vla-object ent))
(ssdel ent ss)
(cvlp-put-style vla (setq tmp
(nth
(vl-position (cvlp-get-type vla)
(list cvlc-aeccExistingGround
cvlc-aeccFinishedGround
cvlc-aeccSuperimposed))
(list Terreno Grade Superimposed))))
(vla-put-layer vla (cadr (assoc tmp sty))))))
(unload_dialog dcl)))
(tbn:error-restore)
)
Link(s) da(s) subrotina(s) usada(s):
Inivars (funções cvl*)
tbn:error-init, multi_set_action_tile, tbn:error-restore
setperfstyle :dialog {label = "Ajustar Estilos dos perfis";
:popup_list {label = "Terreno" ; key = "terreno"; }
:popup_list {label = "Grade" ; key = "grade"; }
:popup_list {label = "Super Imposed" ; key = "superimposed"; }
:text {label="Powered by Neyton®";}
:row{
:button {key = "cncl"; is_cancel = true; label = "melhor dêxa"; }
:button {key = "ok"; is_default = true; label = "é muda aí!!"; }}
}
salve a lisp:
(setq setperfstyle:Terreno "Terreno"
setperfstyle:grade "Grade"
setperfstyle:superimposed "Super")
(defun c:setperfstyle (/ ss ent vla sty acao modes terreno grade superimposed lsty dcl)
(tbn:error-init nil)
(if (setq ss (ssget '((0 . "AECC_PROFILE"))))
(progn
(vlax-for tmp (cvlp-get-LandProfileStyles aec-adoc)
(setq sty (cons (list (cvlp-get-name tmp)
(vla-get-layer (cvlp-get-LineDisplayStyle2d tmp)))
sty)))
(setq dcl (load_dialog "setperfstyle.dcl")
lsty (mapcar 'car sty)
modes (lambda nil (mode_tile "ok" (if (and terreno grade superimposed) 0 1)))
acao (lambda (key val)
(set (read key) (nth (atoi val) lsty))
(modes)))
(new_dialog "setperfstyle" dcl )
(multi_set_action_tile
'("terreno""grade" "superimposed")
(list (list setperfstyle:Terreno lsty "terreno")
(list setperfstyle:grade lsty "grade")
(list setperfstyle:superimposed lsty "superimposed"))
"(acao $key $value)")
(if (= 1 (start_dialog))
(progn
(setq setperfstyle:Terreno Terreno
setperfstyle:Grade Grade
setperfstyle:Superimposed Superimposed)
(repeat (if ss (sslength ss) 0)
(setq ent (ssname ss 0)
vla (vlax-ename->vla-object ent))
(ssdel ent ss)
(cvlp-put-style vla (setq tmp
(nth
(vl-position (cvlp-get-type vla)
(list cvlc-aeccExistingGround
cvlc-aeccFinishedGround
cvlc-aeccSuperimposed))
(list Terreno Grade Superimposed))))
(vla-put-layer vla (cadr (assoc tmp sty))))))
(unload_dialog dcl)))
(tbn:error-restore)
)
Link(s) da(s) subrotina(s) usada(s):
Inivars (funções cvl*)
tbn:error-init, multi_set_action_tile, tbn:error-restore
Para usar, digite o nome da rotina na linha de comando após carregar ela. Ah, claro, só irá funcionar para os perfis efetivamente desenhados nas profileviews, e sim, é preciso copiar as subrotinas também.
Neyton, boa noite!
ResponderExcluirEsta rotina serve apenas para o Civil 3D ou posso usá-la no CAD 2007 ou Map 3D 2007?
Show de bola!!
Parabéns!
só pro c3d, veja as funções com prefixo CVL*, elas são do civil 3d, talvez o land possa usar, mas não tenho certeza
ResponderExcluirTudo bem?
ResponderExcluirError: no function definition: CVLP-GET-LINEDISPLAYSTYLE2D
Command: *Cancel*
porque o erro ao rodar no civil 2009?
porque voce nao leu o post
ResponderExcluirhttp://tbn2.blogspot.com/2007/11/inivars.html
é necesario carregar uma lisp que está nele para esta funcionar