| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Bemaßung / Layer (1585 mal gelesen)
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 27. Nov. 2004 14:49 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen! Ich habe in meiner Template Zeichnung festgelegte Bemaßungsstile (BS) und entsprechende Layer (LA). (BS) BEM1_1 / (LA) BEM1_1 (BS) BEM1_10 / (LA) BEM1_10 usw. Ich möchte mir unter VBA ein Tool erstellen, welches dann über ^C^C-vbarun BEM.dvb!... aus den normalen Werkzeugmakros wie: _dimlinear _dimaligned _dimradius etc. vor dem jeweiligen Bemaßungsbefehl, im Hintergrund erkennt, welcher Bemaßungsstil gerade aktuel geschaltet ist und daraufhin den entsprechenden Layer aktuel schaltet. Könnte man dieses über It...Then oder Select Case möglich machen? Wäre schön, wenn mir dabei jemand helfen würde. Vielen Dank im voraus. Gruß Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Acad 2011-deutsch, Express Tools 3ds Max 2010 Win 7-Professional HP Workstation Z400, 6GB GeForce GTX 470
|
erstellt am: 29. Nov. 2004 11:39 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Ja, das kannst du, brauchts ja nur zu schaun welcher Dimstyle gerade aktuell ist und einfach den jeweiligen Layer aktuell setzten. Aber das hast du ja sowieso schon richtig angedacht. Auf den Button legst du dann einfach die Funktion vor den Dim -Befehlen.  den Rest kannst du sicher einfach selber schreiben. ------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 29. Nov. 2004 12:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo Roland! Danke für die Antwort. Rein theoretisch hab ich mein Tool schon fertig! Leider praktisch noch nicht! Ich hab einfach das Problem den richtigen Faden zufinden. Wäre schön, wenn Du mir da auf die Sprünge helfen könntest. Wie müßte der Code in einem Modul lauten? Ich habe es mal so versucht: Mein VBA Modul lautet Bem01.dvb. Das Werkzeugkastenmakro lautet: ^C^C-vbarun Bem01.dvb!Modul1.Bem;^C^C_dimlinear VBA Code Modul1: Sub BEM() Dim BEM1_1 As AcadDimStyle Dim BEM1_10 As AcadDimStyle Dim Standard As AcadDimStyle Dim BEM_1_1 As AcadLayer Dim BEM_1_10 As AcadLayer Dim BEM As AcadLayer If ThisDrawing.ActiveDimStyle = BEM1_1 Then ThisDrawing.ActiveLayer = BEM_1_1 ElseIf ThisDrawing.ActiveDimStyle = BEM1_10 Then ThisDrawing.ActiveLayer = BEM_1_10 ElseIf ThisDrawing.ActiveDimStyle = Standard Then ThisDrawing.ActiveLayer = BEM End If End Sub Leider komme ich da nicht weiter, so gehts nicht!
Wie gesagt, für Hilfe wäre ich sehr dankbar. Gruß Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RoSiNiNo Mitglied Konstrukteur
   
 Beiträge: 1126 Registriert: 09.10.2002 Acad 2011-deutsch, Express Tools 3ds Max 2010 Win 7-Professional HP Workstation Z400, 6GB GeForce GTX 470
|
erstellt am: 29. Nov. 2004 13:22 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
So kann es auch nicht funktionieren, sag ich mal. Probier es einmal damit: Code: select case ThisDrawing.ActiveDimStyle.Name case "BEM1_1" 'Mach etwas case "BEM1_10" 'Mach etwas anderes case else end select
------------------ Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 02. Dez. 2004 20:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen! Geht doch!!! Man darf nur nicht vorzeitig aufgeben. So ruf ich vor dem Befehl "_dimlinear" ein VBA Makro auf, welches erkennt, welcher DimStyle gerade aktiv ist und schaltet den entsprechenden Layer ein. Werkzeugkastenmakro: ^C^C-vbarun Bemstyle.dvb!Modul1.Bem ^C^C_dimlinear VBA Makro (Modul): Sub Bem() Dim ActDimStyle As AcadDimStyle Set ActDimStyle = ThisDrawing.ActiveDimStyle Select Case ActDimStyle.Name Case "BEM1_1" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_1") Case "BEM1_1_Ausgerichtet" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_1_Ausgerichtet") Case "BEM1_10" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_10") Case "BEM1_100" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_100") Case "BEM1_2" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_2") Case "BEM1_2_Ausgerichtet" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_2_Ausgerichtet") Case "BEM1_20" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_20") Case "BEM1_50" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_50") End Select End Sub Vieleicht hilfts dem einen oder anderen ja? Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 10. Mai. 2006 21:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen! Hat hierzu evtl. jemand einen eleganteren oder anderen Vorschlag. Code:
Dim ActDimStyle As AcadDimStyleSet ActDimStyle = ThisDrawing.ActiveDimStyle Select Case ActDimStyle.Name Case "BEM1_1" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_1") Case "BEM1_1_Ausgerichtet" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_1_Ausgerichtet") Case "BEM1_10" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_10") Case "BEM1_100" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_100") Case "BEM1_2" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_2") Case "BEM1_2_Ausgerichtet" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_2_Ausgerichtet") Case "BEM1_20" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_20") Case "BEM1_50" ThisDrawing.ActiveLayer = ThisDrawing.Layers("BEM1_50") End Select End Sub
Ferner die Frage. Kennt jemand ein Tool, mit dem man einen Bogen (Bogenlänge) wie bei der linearen Bemaßung bemaßen kann, oder könnte man soetwas auch mit VBA lösen? Ich arbeite mit ACAD 2004. Vielen Dank im voraus. Gruß Dirk
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied staatl. geprüfter Holztechniker
   
 Beiträge: 1360 Registriert: 24.07.2002
|
erstellt am: 11. Mai. 2006 06:52 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
Hallo Dirk, Zu der Bogenbemassung: Suche mal nach dem Lisp Dimarc.lsp. Unter VBA könntest du eine Winkelbemaasung erstellen und den Bemassungswert mit dem Längenwert des Bogens überschreiben. Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stelli1 Moderator Verm.-Ing.
    
 Beiträge: 1526 Registriert: 17.08.2005 Map 2000-2014, Rasterdesign, MapGuide, Autodesk Topobase, VS6, VS.net 2013
|
erstellt am: 11. Mai. 2006 17:12 <-- editieren / zitieren --> Unities abgeben:          Nur für Dirk.B
|

| |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
  
 Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 11. Mai. 2006 21:26 <-- editieren / zitieren --> Unities abgeben:         
Hi! Vielen Dank für die Infos. Das mit dem dimarc.lisp funktioniert gut. Wert mal versuchen dieses in VBA umzusetzen bzw. Deine Idee, Carsten, zu testen. Das mit der anderen Geschichte test ich auch mal, Stelli. Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |