FastFiber

tekening afsluiten en lagen aanzetten

Gestart door marcelmaas, vr 22 01 2010, 11:16:32

Vorige topic - Volgende topic

marcelmaas

Hi

Ik probeer een kleine routine te maken die bij het afsluiten van een tekening alle lagen aan zet en ontdooid.
Nou heb ik hem tot zover goed dat de lagen wel aangezet worden maar het ontdooien van de lagen lukt me niet.
Weet iemand hoe dit anders zou moeten?
Dit is wat ik nu heb.


Sub LayersOn()
Dim objLayer As AcadLayer

For Each objLayer In ThisDrawing.Layers
objLayer.LayerOn = True
objLayer.Freeze = False
Next
ThisDrawing.Regen acAllViewports

End Sub

marcelmaas

Ik heb het makkelijker opgelost, door een macro te maken.
Nu zou ik deze graag aan de knop voor het afsluiten van de tekening toe willen voegen zodat iedere keer als iemand een tekening afsluit dat dan alle lagen aangezet en ontdooid worden maar dat lukt me nog niet.
Heeft iemand een idee hoe dat zou kunnen.
Ik had onderin de cui dialoogbox het commando close gevonden en had hem daar voor _close gezet maar dat werkte niet.
Misschien zoek ik op de verkeerde plaats..?

groeten marcel..

bart

Mischien is bij jullie een dergelijke manier van opslaan gewenst cq geen probleem
(ik zou zacht gezegd niet blij mee zijn)

een macro kan gewoon heel simpel
-layer;u(nlock);on;t(haw);;

delen tussen haakjes kan  je weglaten
Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

marcelmaas

Hi Bart,

Weet jij misschien ondanks dat je er niet voor zou kiezen, hoe ik deze macro aan de close knop voor tekening afsluiten kunt vasthangen?

groeten Marcel..

EddyBeerke

met VBA kun je deze regel misschien ombouwen:

ThisDrawing.Layers(Obj.Layer).Freeze = True
Als je dan False van True maakt zou het moeten werken
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

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

sschevers

Marcel,

Je kunt dit niet oplossen door het achter de knop te hangen. Bij het afsluiten van je tekening wordt er een event getriggerd. Dit event moet je opvangen en daar je eigen code aan toevoegen.

Ik heb een test project toegevoegd hoe je met events kan omgaan. In dit geval het plot event (sorry dit had ik nog liggen). Op dezelfde manier kun je ook het document close event behandelen. de test routine run je eenmalig bij het opstarten van autocad (dvb laden vanuit de acad.lsp en vervolgens het het vba commando runnen (vl-vbarun"test")

Hopelijk heb ik je een beetje op weg geholpen

stephan

Joop

Dit misschien?
-layer;u(nlock);on;t(haw);;-qsave;y(es);
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

HofCAD

#7
Citaat van: marcelmaas op vr 22 01 2010, 11:16:32
Hi

Ik probeer een kleine routine te maken die bij het afsluiten van een tekening alle lagen aan zet en ontdooid.
Nou heb ik hem tot zover goed dat de lagen wel aangezet worden maar het ontdooien van de lagen lukt me niet.
Weet iemand hoe dit anders zou moeten?
Dit is wat ik nu heb.


Sub LayersOn()
Dim objLayer As AcadLayer

For Each objLayer In ThisDrawing.Layers
objLayer.LayerOn = True
objLayer.Freeze = False
Next
ThisDrawing.Regen acAllViewports

End Sub

Beste Marcel,

Werkt dit:

Sub LayersOn()
Dim objLayer As AcadLayer
ThisDrawing.SetVariable "CLAYER", "0"
For Each objLayer In ThisDrawing.Layers
If objLayer.Name <> "0" Then
objLayer.LayerOn = True
objLayer.Freeze = False
End If
Next
ThisDrawing.ActiveLayer.LayerOn = True
ThisDrawing.Regen acAllViewports
End Sub

Sub LayersOn2()
Dim objLayer As AcadLayer
For Each objLayer In ThisDrawing.Layers
If objLayer.Name <> ThisDrawing.GetVariable("CLAYER") Then
objLayer.LayerOn = True
objLayer.Freeze = False
End If
Next
ThisDrawing.ActiveLayer.LayerOn = True
ThisDrawing.Regen acAllViewports
End Sub


Met bijvoorbeeld als macro's:
^C^C_-VBARUN "C:/MijnProgs/ToggleLayers.dvb!Module1.LayersOn"
^C^C_-VBARUN "C:/MijnProgs/ToggleLayers.dvb!Module1.LayersOn2"
^C^C_-VBARUN "C:/MijnProgs/ToggleLayers.dvb!Module1.ToggleLayers"


Met vriendelijke groet, HofCAD CSI.

PS Zie ook ToggleLayers.dvb
ACADcadabra

marcelmaas

Dank je Hofcad, dat ziet er goed uit.
Ik zal het eens testen.

Je hoort het nog van me.

Groeten Marcel..