Beste Mensen,
Waarom werkt onderstaande code niet om een zwevend VIEWPORT
te wijzigen.
(command "_MVIEW" '(50 80) "@100,100")
(setq emv (entlast))
(setq ed (entget emv))
(setq ed (subst (cons 10 '(61.0 137.5 0.0)) (assoc 10 ed) ed))
(setq ed (subst (cons 12 '(72.5 0.0 0.0)) (assoc 12 ed) ed))
(setq ed (subst (cons 40 60.0) (assoc 40 ed) ed))
(entmod ed)(entupd emv)
Bij voorbaat mijn dank.
Citaat van: Anonymous
niet allemaal tegelijk hoor......
Wellicht een domme vraag, maar wat bedoel je precies met een zwevend viewport?
Groetjes
In regel 4, 5 en 6 wijs je steeds een andere waarde toe aan dezelfde variabele.
Dit heeft tot gevolg dat in regel 7 waar je het element veranderd alleen volgens regel 6 wijzigd en regel 4 en 5 dus voor niets in het programma staan.
Probeer het volgende eens:
(command "_MVIEW" '(50 80) "@100,100")
(setq emv (entlast))
(setq ed (entget emv))
(setq ed (subst (cons 10 '(61.0 137.5 0.0)) (assoc 10 ed) ed))
(entmod ed)(entupd emv)
(setq ed (subst (cons 12 '(72.5 0.0 0.0)) (assoc 12 ed) ed))
(entmod ed)(entupd emv)
(setq ed (subst (cons 40 60.0) (assoc 40 ed) ed))
(entmod ed)(entupd emv)
Hopenlijk werkt dit goed.
Ik heb dit niet zelf getest.
Joop
Citaat van: AnonymousWellicht een domme vraag, maar wat bedoel je precies met een zwevend viewport?
Groetjes
Beste Gast,
Een zwevend viewport is een kijkvenster(viewport) in paperspace;
dus als Tilemode = 0 (of tegeltjesmode uit).
De term zwevend wordt gebruikt, omdat in paperspace de viewports
niet in tegelvorm het hele scherm moeten opdelen.
Men mag de viewports daar overal los (zevend) plaatsen, zelfs binnen en
en al of niet geheel overlappend.
Groetjes
Citaat van: Joop
Probeer het volgende eens:
(command "_MVIEW" '(50 80) "@100,100")
(setq emv (entlast))
(setq ed (entget emv))
(setq ed (subst (cons 10 '(61.0 137.5 0.0)) (assoc 10 ed) ed))
(entmod ed)(entupd emv)
(setq ed (subst (cons 12 '(72.5 0.0 0.0)) (assoc 12 ed) ed))
(entmod ed)(entupd emv)
(setq ed (subst (cons 40 60.0) (assoc 40 ed) ed))
(entmod ed)(entupd emv)
Hopenlijk werkt dit goed.
Ik heb dit niet zelf getest.
Joop
Beste Joop,
Er is meer aan de hand, waarschijnlijk omdat een zwevend vieport
een samengestelde entiteit is.
Men kan bijvoorbeeld ook de kleur van een viewport niet zo maar
veranderen.
Groetjes
(defun C:test()
(setvar "TILEMODE" 0)
(command "_COLOR" "RED")
(command "_LINE" '(40 80) "@0,100" "")
(setq e1 (entlast))
(command "_MVIEW" '(50 80) "@100,100")
(setq e2 (entlast))
(command "_COLOR" "BYLAYER")
;;;;Lijn van kleur rood naar kleur Cyaan veranderen
(setq ed1 (entget e1))
(setq ed1 (subst (cons 62 4) (assoc 62 ed1) ed1))
(entmod ed1)(entupd e1) ;dit gaat
;;;;Viewport van kleur rood naar kleur Cyaan veranderen
(setq ed2 (entget e2))
(setq ed2 (subst (cons 62 4) (assoc 62 ed2) ed2))
(entmod ed2)(entupd e2) ;dit gaat niet
)
Ik zal hier de komende tijd eens goed induiken en het probleem onderzoeken.
Dit kan echter wel even duren i.v.m. zaken die ik niet zelf in de hand heb. :cry:
Zoals gebruikelijk blijf uitkijken.
Joop :P
Slecht nieuws.
Je kunt een viewpoort niet met lisp opdrachten, zoals entupd, entmod en entmake, wijzigen.
Je kunt er wel omheen werken met de command opdracht vanuit een lisp routine.
UIteraard is dit omslachtiger, maar helaas.
Succes,
Joop