FastFiber

Layerfilter selecteren in lisp (of macro)

Gestart door Manu, wo 25 09 2013, 16:17:17

Vorige topic - Volgende topic

Manu

Via de layermanager kun je een layergroep aanmaken en kan je de layers uit die welbepaalde groep middels een rechtdubbelklik via visibility in 1 beweging OFF/ON/FREESE/THAW zetten..
Kent iemand hoe je zo'n selectie van een layergroep in een lisp opneemt?

groeten,

Manu
AutoCad 2000 - 2007 - 2008
Sketchup 4-5-6

bart

^C^C-layer;state;restore;plotlagen;;;

Deze macro maakt de filter plotlagen actief
(moet dan wel aanwezig zijn uiteraadt)
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

Manu

Bedankt voor de input Bart,

Maar hoe verwerk ik dit in volgende lisp? :

;Zet alle layers uit de layerfilter OFF
(defun c:LAF ()
(command "-layer" "off" )
(princ))

groeten,

Manu
AutoCad 2000 - 2007 - 2008
Sketchup 4-5-6

HofCAD

Beste Manu,

Je zou ook verschillende layer states(Bijv. LayOn en LayOff) kunnen exporteren met
het commando LAYERSTATE naar bijv. C:\Test.Las,
met in de ene dat bepaalde lagen aan staan en in de andere uit
Daarna kun je:
(defun c:ImpLaSta ()
  (if (layerstate-import "C:\\Test.LAS")
    (princ "Test.LAS imported.")
    (princ "Error importing Test.LAS")
  )
)
(defun c:ResLaStaOn ()
  (if (layerstate-restore "LayOn" nil)
    (princ "LayOn restored.")
    (princ "Error restoring LayOn")
  )
)

(defun c:ResLaStaOff ()
  (if (layerstate-restore "LayOff" nil)
    (princ "LayOff restored.")
    (princ "Error restoring LayOff")
  )
)
(defun c:ResLaStaVpOff ()
  (setq ss (ssget "_X" '((0 . "VIEWPORT")))
n  (sslength ss)
  )
  (while (>= (setq n (1- n)) 0)
    (layerstate-restore "LayOff" (ssname ss n) 4)
  )
)


Met vriendelijke groet, HofCAD CSI.
ACADcadabra

Manu

Beste HofCad (hello again)

Misschien een kleine toelichting bij het 'probleem'..

Een paar weken terug is er op ons bedrijf beslist om niet langer meer te gaan investeren in AutoDesk.. een eerste gevolg van de crisis.. :( :( :(
We hebben enkel nog licenties van ACAD2007 (die niet draaien op een WIN 7 64-bit PC én steeds meer problemen hebben met dwg's uit recentere Acad-versies..). Er is gekozen voor ProgeCad (het goedkoopste op de markt). Die ProgeCad mag dan wel een mooi alternatief zijn (ik wik mijn woorden hier) maar het is uiteraard niet wat AutoCAd is en blijft : het duurste maar ook beste CAD-pakket..
Eén van de buggy-features is hun layerafhandeling.. vooral dan het isoleren ervan.. dat kan tot 3 minuten oplopen.. :shock:

De enige workaround is om in de layermanager (geen layerstate!!) via visibility alle gebruikte lagen op OFF te zetten (current zal dan eigenlijk geisoleerd zijn..) .. die methode werkt wel vlot..

Weet dan ook dat de software enkel LISP aankaan (géén Visual Lisp).. vandaar mijn vraag of ik deze methode in een lisp kan gieten...

Manu (ex-AutoCad-user... :x)
AutoCad 2000 - 2007 - 2008
Sketchup 4-5-6

HofCAD

#5
Beste Manu,

(defun C:NotCurOff()
(command "_.LAYER" "_OFF" "*" "N" "")
)
(defun C:NotCurLock(/ ~CLAY)
(setq ~CLAY (getvar "CLAYER"))
(command "_.LAYER" "_Lock" "*" "")
(command "_.LAYER" "_Unlock" ~CLAY "")
)
(defun C:NotCurFre()
(command "_.LAYER" "_Freeze" "*" "")
)

En als macro voor NotCurOff:
^C^CLAYER;OFF;*;N;;
En als macro voor NotCurFre:
^C^CLAYER;Freeze;*;;


Met vriendelijke groet, HofCAD CSI.
ACADcadabra

Manu

diepe zucht... vlug de macro getest : "Unable to recognize command "OFF".  Please try again."
ik vrees dat het niets wordt... toch bedankt voor het meedenken  :cry:

Manu
AutoCad 2000 - 2007 - 2008
Sketchup 4-5-6

HofCAD

Manu,

Welke opties geeft het commando -LAYER?
(even knippen en plakken)

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

Manu

Citaat van: HofCAD op do 26 09 2013, 16:33:31
Manu,

Welke opties geeft het commando -LAYER?
(even knippen en plakken)

Met vriendelijke groet, HofCAD CSI.

Layer:  ? to list/New/Make/Set/Color/Ltype/LWeight/Print/PStyle/ON/OFF/Freeze/Thaw/LOck/Unlock:
AutoCad 2000 - 2007 - 2008
Sketchup 4-5-6

Manu

HofCad,

Na herstarten van de software doet de marco wat hij doen moet.. alleen duurt het proces net even lang als het LAYISO command...  :(

Enkel de manier via de layermanager-filter-visibility-OFF werk snel... kan die methode echt niet via lisp?

Manu
AutoCad 2000 - 2007 - 2008
Sketchup 4-5-6

roy_043

Misschien dat (entmod) sneller is.
De bijgevoegde Lisp bevat 4 test commando's:
TestLayIsoOff, TestLayAllOn, TestLayIsoLock en TestLayAllUnlock.

Manu

Hey roy_043 & HofCad,

ZOwel de laatste lisp én de macro werken wel .. maar het duurt een eeuwigheid voor het commando klaar is.. dus net zoals het bestaande commande LAYISO.
Om het wat te verduidelijken kun je via deze link https://dl.dropboxusercontent.com/u/2500366/LAYISO.avi een sreencast downloaden waarin ik eerst de methode met de visibility aantoon (dat gaat vlot), gevolgd door wat er gebeurd indien ik het commano LAYISO (of de macro of de LISP) gebruik... weet daarbij dat de laatste manier eigenlijk een dikke minuut duurde.. ik stopte met de opname om het AVI-bestand te beperken in omvang.... 8)

groeten,

Manu
AutoCad 2000 - 2007 - 2008
Sketchup 4-5-6

roy_043

@ Manu:
Spijtig dat het probleem blijkbaar niet op te lossen is. Uit het voorgaande begrijp ik dat ProgeCAD reeds aangeschaft is, anders zou ik adviseren om eens naar BricsCAD te kijken. BricsCAD heeft een goede Lisp implementatie (incl. zeer veel vl* functies) en m.b.v. BricsCAD's unieke functies (vle-start-transaction) en (vle-end-transaction) zou de (entmod) oplossing waarschijnlijk supersnel gemaakt kunnen worden.

Wat is er misgegaan bij de trial dat dit probleem nu pas wordt ontdekt?

Manu

Citaat van: roy_043 op za 28 09 2013, 14:09:53
Wat is er misgegaan bij de trial dat dit probleem nu pas wordt ontdekt?

tja, alles moest verschrikkellijk snel gaan (orders van bovenaf) .. de testtekeningen die werden opgemaakt hadden amper een paar verschillende layers waardoor het probleem niet direct opviel.. wellicht zullen er dus nog andere 'problemen' naar voren komen... Helaas zijn de 3 seats inderdaad al aangekocht .. we zuller er het moeten bij doen..  :shock:

toch fijn dat jullie allemaal meezochten naar een oplossing..!

fijne groeten,

Manu
AutoCad 2000 - 2007 - 2008
Sketchup 4-5-6

EddyBeerke

Gaat het ook langzaam als je de layermanager uit hebt staan?
Want zoals in het filmpje knippert de boel nogal!
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

FastFiber