CADsite forum

AutoCAD => VBA => Topic gestart door: marcelmaas op vr 22 01 2010, 11:16:32

Titel: tekening afsluiten en lagen aanzetten
Bericht door: 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
Titel: Re:tekening afsluiten en lagen aanzetten
Bericht door: marcelmaas op za 23 01 2010, 11:53:21
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..
Titel: Re:tekening afsluiten en lagen aanzetten
Bericht door: bart op ma 25 01 2010, 12:05:48
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
Titel: Re:tekening afsluiten en lagen aanzetten
Bericht door: marcelmaas op ma 25 01 2010, 14:32:34
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..
Titel: Re:tekening afsluiten en lagen aanzetten
Bericht door: EddyBeerke op wo 19 05 2010, 09:02:40
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
Titel: Re:tekening afsluiten en lagen aanzetten
Bericht door: sschevers op wo 19 05 2010, 12:13:15
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
Titel: Re:tekening afsluiten en lagen aanzetten
Bericht door: Joop op wo 19 05 2010, 13:03:38
Dit misschien?
-layer;u(nlock);on;t(haw);;-qsave;y(es);
Titel: Re:tekening afsluiten en lagen aanzetten
Bericht door: HofCAD op wo 19 05 2010, 13:34:19
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
Titel: Re:tekening afsluiten en lagen aanzetten
Bericht door: marcelmaas op vr 21 05 2010, 07:51:26
Dank je Hofcad, dat ziet er goed uit.
Ik zal het eens testen.

Je hoort het nog van me.

Groeten Marcel..