| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Makros in VBA unter C3D2017, Programmabsturz (1161 / mal gelesen)
|
otm Mitglied Bauingenieur
 
 Beiträge: 192 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023.2.1 Update VBA Enabler 2019 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 11. Jul. 2017 14:36 <-- editieren / zitieren --> Unities abgeben:         
Liebes Forum, ich versuche meinen von C3D 2013 auf C3D 2017 umzustellen und auch meinen VBA-Code mitzunehemne. Nun bekomme bei der Zeile Code: ThisDrawing.ActiveLayer = ThisDrawing.Layers(strLay)
nicht immer, aber immer wieder die Fehlermeldung "Fehler beim Einrichten des aktiven Layers" Der Layer ist an, nicht gefroren, wird nicht neu erstellt. Zeichne ich zwischen den Makroaufrufen irgendeine Linie, läuft das Makro einwandfrei durch. Ich nehme an, der Fehler liegt nicht in der Code-Zeile. Gibt es irgendetwas beim Ausführen von Makros in C3D 2017 zu beachten? ------------------ Grüße aus München Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
otm Mitglied Bauingenieur
 
 Beiträge: 192 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023.2.1 Update VBA Enabler 2019 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 18. Jul. 2017 14:22 <-- editieren / zitieren --> Unities abgeben:         
Liebes Forum, es muss wohl an den doppelten Einträgen im _adcenter bei Layer/Layers, Blöcke/Blocks, ... liegen. Per VBA kann man deshalb die richtige Liste (ThisDrawing.layers(xxx)) wohl nicht immer ansprechen und es kommt zu Fehlermeldungen. Lt. Autodesk kommt dieser Fehler (deutsche + englische Ordner) bei den deutschen Civil 3D Versionen von 2018,2017 und 2016 vor. Kann mir jemand sagen, wie ich die richtige Liste im VBA korrekt anspreche?
------------------ Grüße aus München Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rexxitall Mitglied Dipl. -Ing. Bau
 
 Beiträge: 270 Registriert: 07.06.2013 Various: systems, Operating systems, cad systems, cad versions, programming languages.
|
erstellt am: 04. Aug. 2017 01:14 <-- editieren / zitieren --> Unities abgeben:          Nur für otm
Schon mal rein provokativ Thisdrawing.layers.item("blah") probiert ? Natürlich muss der Layer existent sein Also obrige Lösung ist nur dann ne Lösung wenn die Implementierung "etwas" strange ist *untested* war zu faul die aus meiner lib rauszukopieren  function layer_exist(layer as string)as boolean layer_exist=false on error resume next err.clear dim l as layer set l=thisdrawing.layers(layer) if err.number=0 then layer_exist=true end function wenn die funktion false ergibt dann ist ein Thisdrawing.layers.add angesagt  Lieben Gruß Thomas ------------------ Wer es nicht versucht, hat schon verlorn  Und bei 3 Typos gibts den vierten gratis ! <<< for sale ! [Diese Nachricht wurde von rexxitall am 04. Aug. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
rexxitall Mitglied Dipl. -Ing. Bau
 
 Beiträge: 270 Registriert: 07.06.2013 Various: systems, Operating systems, cad systems, cad versions, programming languages.
|
erstellt am: 04. Aug. 2017 01:25 <-- editieren / zitieren --> Unities abgeben:          Nur für otm
Kleiner Nachtrag. es muss nicht zwangsläufig sein das acad ad bei der Routine abraucht. Sehr oft konnte ich ein "sonderbares" Verhalten feststellen wenn der VBA Code beim "compilieren" nicht furchläuft. Auch das exportieren und wiedereinlesen der VHA objekte hat auch schon mal Fehler behoben. Und zu guter lezt das Phänomen : nach reboot tut alles. Ich red hier über ne DVB mit ca. 400.000 Zeilen  Lieben Gruß Thomas ------------------ Wer es nicht versucht, hat schon verlorn  Und bei 3 Typos gibts den vierten gratis ! <<< for sale ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |