FastFiber

Viewport veranderen met LISP

Gestart door Anonymous, wo 19 01 2005, 09:49:11

Vorige topic - Volgende topic

Anonymous

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.

Anonymous

Citaat van: Anonymous
niet allemaal tegelijk hoor......

Anonymous

Wellicht een domme vraag, maar wat bedoel je precies met een zwevend viewport?

Groetjes

Joop

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
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

Anonymous

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

Anonymous

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
)

Joop

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
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

Joop

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
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

FastFiber