Hallo allemaal,
Ik zou graag in paperspace een aantal lagen automatisch uit willen laten schakelen met het commando LAYOFF.
Bijvoorbeeld met het commando ''test'' wil ik automatisch dat in de geselecteerde viewport alle lagen, die de naam test bevatten, onizchtbaar worden met het commando ''layoff''. De laag wordt dan bevroren bij VPFREEZE.
Is er een mogelijkheid om dit voor elkaar te krijgen??
Alvast bedankt voor jullie reacties!
Dat is vrij goed te doen via een macro'tje.
Plaats even alle tekst die je moet invoeren om te doen wat je wil bereiken, dan kan daar waarschijnlijk snel een macro van gemaakt worden.
Citaat van: julien op wo 30 06 2010, 09:49:37
Dat is vrij goed te doen via een macro'tje.
Plaats even alle tekst die je moet invoeren om te doen wat je wil bereiken, dan kan daar waarschijnlijk snel een macro van gemaakt worden.
Ik heb verschillende lagen die ik wil uitzetten met LAYOFF. Als voorbeeld neem ik de laagnaam ''test''.
Helaas heb ik niet veel ergvaring met het schrijven van een macro. Ik kan wel een macro maken die het commando LAYOFF inschakeld maar verder kom ik niet.
Kan iemand mij misschien helpen bij het maken van een macro welke de laagnaam ''test'' automatisch uitschakeld? Het is hierbij wel de bedoeling dat de laag dan uitstaat in de layer manager bij 'VPFREEZE', want niet in alle viewports moet de laag test uitgeschakeld worden...
Citaat van: Rubke10 op wo 30 06 2010, 10:11:40
Ik heb verschillende lagen die ik wil uitzetten met LAYOFF. Als voorbeeld neem ik de laagnaam ''test''.
Helaas heb ik niet veel ergvaring met het schrijven van een macro. Ik kan wel een macro maken die het commando LAYOFF inschakeld maar verder kom ik niet.
Kan iemand mij misschien helpen bij het maken van een macro welke de laagnaam ''test'' automatisch uitschakeld? Het is hierbij wel de bedoeling dat de laag dan uitstaat in de layer manager bij 'VPFREEZE', want niet in alle viewports moet de laag test uitgeschakeld worden...
zie bijlage. Extentie even wijzigen naar .scr
Michel
vanaf nu kunnen bestanden met de extentie scr ook geupload worden. :wink:
Citaat van: julien op wo 30 06 2010, 11:21:27
vanaf nu kunnen bestanden met de extentie scr ook geupload worden. :wink:
@julien
:vreegoe: :vreegoe: :vreegoe:
Welkom Rubke,
Ik heb onder een knopje dit staan:
vplayer;f;X05*;;f;X07*;;;
Hierbij is X05* een naam met een 'wildcard match', in mijn geval zijn dit alle lagen die beginnen met "X05".
X07*, idem
De ";" is gelijk aan een enter of spatie.
Dit zijn beide erg goede opties! Precies wat ik zocht! Het commando VPLAYER was bij mij niet bekend.
Dit commando werkt perfect!
Echter nu loop ik tegen een tweede probleem aan. Wanneer ik een laag bij maak waar ook de naam ''test'' in voorkomt dan zou deze ook uit moeten schakelen in alle viewports waar ik het commando VPLAYER --> freeze --> *test* --> current al eens heb uitgevoerd. Helaas gebeurt dit niet automatisch. Is er ook een commando wat er voor zorgt dat, wanneer ik een laag heb bijgemaakt waarin het woordt test voorkomt, deze ook uit automatisch wordt uitgeschakeld in de viewports waar ik het commaondo VPLAYER al heb uitgevoerd. Anders zou ik telkens alle layouts met alle viewports na moeten lopen als men later een laag met de naam ''test'' toevoegt.
Citaat van: Rubke10 op wo 30 06 2010, 12:34:03
...
Is er ook een commando wat er voor zorgt dat, wanneer ik een laag heb bijgemaakt waarin het woordt test voorkomt, deze ook uit automatisch wordt uitgeschakeld in de viewports waar ik het commaondo VPLAYER al heb uitgevoerd. Anders zou ik telkens alle layouts met alle viewports na moeten lopen als men later een laag met de naam ''test'' toevoegt.
Volgens mij is dit niet standaard mogelijk.
Er zou een actie moeten plaatsvinden wanneer je een laag aanmaakt die controleert of het voldoet aan jou eis.
Dit is mogelijk als je een programma schrijft, maar lijkt mij erg lastig.
Maar waarom wil je die layers die je aanmaakt uit hebben, en blijven die dan ook uit zodat ze nooit geplot worden?
Als dit laatst het geval is dan is de oplossing nog makkelijker dan je denkt.
Ik heb vaak projecten met zo'n 40 a 50 layouts, met in elke layout zo'n 8 viewports.
We hebben vlug zo'n 300 a 400 viewports en weten op den duur niet meer of hiervan 133 viewports 1:20 zijn of bijvoorbeeld 267. Wel weten we dat we de laag, waarin het woord ''test'' in voorkomt, niet geplot willen hebben in de viewports welke 1:20 geplot worden.
Als wij, i.v.m. voortschrijdend inzicht, later een laag toevoegen met de naam test hierin, weten we wel dat we deze 1:20 niet willen plotten, dus onzichtbaar maken in de viewports 1:20.
Dit moet toch op een makkelijke manier kunnen, dan alle 400 vieports openen en hier de macro opnieuw op loslaten.
Nu je deze omschrijving geeft zit ik te denken aan macro / lisproutine waarbij je eerst aparte lagen maakt voor de viewports (per schaal). Vervolgens kun je een macro laten draaien die in alle viewports op laag VP1-20 de lagen met *test* bevriest.
Misschien heeft iemand anders een ander/beter idee?
Reimer
Het is misschien mogelijjk.
Maar dan moet je die objecten in een block tekenen en er een annotation aan hangen zodat het niet zichtbaar is in 1:20.
Zie deze link: http://docs.autodesk.com/ACD/2011/ENU/filesAUG/WSfacf1429558a54de2ab0a1008e4be961-7e0f.htm (http://docs.autodesk.com/ACD/2011/ENU/filesAUG/WSfacf1429558a54de2ab0a1008e4be961-7e0f.htm)
Het is even lezen maar volgens mij kom je erwel uit.
Citaat van: Reimer op wo 30 06 2010, 15:53:29
Nu je deze omschrijving geeft zit ik te denken aan macro / lisproutine waarbij je eerst aparte lagen maakt voor de viewports (per schaal). Vervolgens kun je een macro laten draaien die in alle viewports op laag VP1-20 de lagen met *test* bevriest.
Misschien heeft iemand anders een ander/beter idee?
Reimer
Dit is eigenlijk waar ik naar op zoek ben. Ik weet alleen niet hoe je zo'n soort lisp moet schrijven.
De lisp moet dan (in mijn ogen) automatisch alle layouts openen en bekijken of er een viewport schaal 1:20 in voorkomt. Als er een viewport 1:20 in de layout zit dan zou hij automatisch deze viewport moeten openen en dan de laag ''test'' onzichtbaar moeten maken via VPLAYER-->freeze.
Zou iemand mij op weg kunnen helpen met het schrijven van zo'n lisp??
In mijn lisp: PrintAllLayouts.lsp dien je op deze site kunt vinden zit een goed begin voor jou om in de tekening naar alle layouts te gaan.
Nu kun je deze aanpassen voor elke vport in elke layout.
@ Rubke10:
Nog een interessante lisp:
vpfreeze van CadDog:
http://forums.augi.com/showthread.php?t=83721
@ EddyBeerke:
Ik kan PrintAllLayouts.lsp niet vinden. Noch met de zoekfuntie op het forum noch met Google.
Kun je een link posten?
www.cadsite.be/smf/index.php?topic=3954.0
EddyBeerke en Roy_043, ik heb veel over jullie oplossingen nagedacht en geëxperimenteerd maar heb helaas nog steeds niet de juiste oplossing kunnen vinden.
Graag zou ik mijn vraag nogmaals bij jullie onder de aandacht willen brengen.
Het probleem is als volgt:
Ik heb zo'n 300 á 400 ingeregeld op verschillende schaalniveau's. Nu voeg ik later een laag toe met de naam ''test''. Deze laag zou ik niet geplot willen hebben in al mijn viewports met het schaalniveau 1:20. Ik ben er achter dat ik wel een nieuwe laag aan kan maken welke in alle viewports wordt bevroren ('new layer VP frozen in all viewports'), echter moet dit alleen in de viewports schaal 1:20 zijn.
Een andere methode zou zijn waarbij Autocad automatisch alle viewports in mijn tekening opent die het schaalniveau 1 op 20 hebben. In elke viewport zou Autocad dan een commando uit moeten voeren waarbij de laag ''test'' wordt bevroren d.m.v. VPLAYER --> Freeze.
Dit omdat ik anders alle 300 á 400 viewports handmatig moet openen de laag ''test'' handmatig moet bevriezen.
Ik hoop mijn probleem zo duidelijk omschreven te hebben.
Jouw probleem is en was duidelijk.
Citaat van: Rubke10 op wo 07 07 2010, 16:49:04Zou iemand mij op weg kunnen helpen met het schrijven van zo'n lisp??
Maar wat versta jij onder op weg helpen?
De code hieronder brengt je nog iets dichter bij de finish:
; (SelScaledViewports 0.05) ; retourneert een lijst met de enames van alle viewports waarvoor geldt: schaal=1:20
(defun SelScaledViewports (scale / ss i ent entLst result)
(if (setq ss (ssget "_X" '((0 . "VIEWPORT"))))
(progn
(setq i -1)
(repeat (sslength ss)
(setq ent (ssname ss (setq i (1+ i))))
(setq entLst (entget ent))
(if (equal (/ (cdr (assoc 41 entLst)) (cdr (assoc 45 entLst))) scale 0.00000001)
(setq result (cons ent result))
)
)
result
)
)
)
Beste Roy,
Wat is op weg helpen? Dat is inderdaad een goeie vraag.
Wij zijn maar een klein kantoor met 2 tekenaars en zitten echt al weken te brainstormen heo we dit probleem op kunnen lossen. We zijn niet goed in het schrijven van Lisps, echter is het ons wel ooit gelukt om een simpele lisp te schrijven maar dit gaat onze pet te boven.
We hebben jouw code in een kale Lips gezet en deze ingeladen in Autocad met appload. Wat zou deze Lisp moeten doen? En hoe krijgen we deze Lisp werkend?
Wij vragen onszelf af of het niet op een eenvoudigere manier kan dan door het schrijven van een Lisp. Autocad zou toch iets ingebouwd moeten hebben waarbij een laag gerelateerd is aan een annotation scale in de layer manager. Hierbij zou dan de laag test zichtbaar gemaakt kunnen worden op schaalniveau 1:20 wel en 1:100 niet. Het lijkt ons een gemiste kans als dit niet het geval is.
De lisp maakt volgens de beschrijving een lijst met de viewports die 1:20 zijn ingesteld.
lees de waarde van result maar eens uit na het uitvoeren van de lisp
Allez, vooruit dan. Bijgevoegd VPFreezeScale.lsp.
Hartelijk dank voor de lisp Roy_043.
Helaas werkt hij nog niet helemaal goed bij ons. Wij krijgen de volgende melding:
vpfs
Naam van de laag <test 2 1 op 100>:
Schaal van de viewports waarin test 2 1 op 100 bevroren moet worden: 1:20
; error: no function definition: VLAX-ENAME->VLA-OBJECT
Doen wij iets niet helemaal goed??
PS: wij hebben gezien dat je de lisp nog een keer hebt gewijzigd. We hebben de lisp nogmaals gedownload maar krijgen nog dezelfde foutmelding.
Ik was (vl-load-com) vergeten. Bijgevoegd de nieuwe versie.
Het ziet er veelbelovend uit!
Helaas geeft Autocad nu de melding dat het schaalniveau niet in paperspace voor komt. Dit terwijl wij meerdere viewports in de paperspaces hebben zitten welke zijn ingesteld op viewportscale 1:20 en annotationscale 1:20.
Dit is de melding:
Command: vpfs
Naam van de laag <test>:
Schaal van de viewports waarin test bevroren moet worden: 1:20
; error: Automation Error. Not in paperspace
Doen wij iets fout?
In Bricscad krijg ik deze melding niet.
Het probleem wordt mogelijk veroorzaakt door de functie VPFreeze van CadDog. In VPFreezeScale_C.lsp zijn 2 regels in deze functie uitgecommentarieerd. Verder is de functie SelScaledViewports iets aangepast.
Hopelijk werkt het.
Het werkt!!!!!!!!! Onze hartelijke dank hiervoor!! :D :D :D :vreegoe: :vreegoe:
Deze lisp doet wat wij willen! :vreegoe:
Maar toch verbaast het ons dat bij de layer manager niet de optie zit om per laag toe te kennen in welke annotationscale of viewportscale deze zichtbaar moet zijn.
Misschien in een nieuwere versie.
Stel het voor bij Autodesk
Roy-043 nogmaals bedankt voor je oplossing :vreegoe:
Wij blijven ondertussen verder brainstormen over dit onderwerp!
Ps Eddy, ze zullen bij autodesk toch wel zo slim zijn dat ZIJ deze site in de gaten houden.
:D