| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Rahmen+Schriftkopf mit VBA einfügen (3131 mal gelesen)
|
The VIP Mitglied Technischer Zeichner
Beiträge: 170 Registriert: 06.09.2002 AutoCAD Mechanical 6 unter Windows XP
|
erstellt am: 22. Jul. 2004 08:01 <-- editieren / zitieren --> Unities abgeben:
Hallo. Ich möchte gerne einen den Rahmen und den Schriftkopf automatisch in der richtigen Größe in einer Zeichnung einfügen lassen. Grund: Je nach dem was man in meiner Eingabemaske ausfüllt kann es sein, dass anstatt dem Standard DIN A2 Rahmen ein DIN A1 Rahmen für die Zeichnung benötigt wird. Das Makro kann den benötigten Rahmen aufgrund der Daten die der Benutzer in der Eingabemaske macht errechnen, aber ich weiß nicht wie der VBA Code für die Einstellungen heißt. Wenn ich auf den Button hier klicke um den Rahmen + Kopf manuell einzufügen, dann steht in der Leiste unten _amtitle Kann man den dann überhaupt über VBA einfügen lassen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco Lorenz Mitglied Softwareentwickler, freier Inventor & AutoCAD Händler
Beiträge: 59 Registriert: 18.09.2001 Win NT,2k,XP Pro Acad+Mechanical2k-2005, Inventor 5-9
|
erstellt am: 22. Jul. 2004 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für The VIP
Ja, kannst Du. Du brauchst dazu die AMGPDMLib (amgpdm.arx), die Du bei den Verweisen einfügen mußt. folgendes Codefragment zur Hilfe: Set app = GetInterfaceObject("amgpdm.application") Set Dwg = app.CurrentDrawing Set tbm = Dwg.TitleBorderMgr Set tbd = tbm.NewDescriptor Set tbc = tbm.NewContext(kDefaultUserInput) Set bc = tbd.BorderDescriptor Set tc = tbd.TitleDescriptor Call tbd.SetScale(csng(1)) bc.name = "DIN_A4" tc.name = "AM_TITLE" tbc.InputPosition = True tbc.InputAttributes = True Set Tb = tbm.CreateTitleBorder(tbd, tbc) Im Anhang hab ich Dir die Datei pdmsdk.zip reingehängt, da hast Du das ganze Hilfesystem zu den PDM-Funktionen (stehen nicht in der normalen Hilfe). Ist zwar schon ein paar Jahre alt, aber es hat sich da bei Mechanical nichts geändert. Kannst mit der aktuellen amgpdm.arx arbeiten. Sind auch noch eine Reihe anderer Funktionen drinnen Viel Spaß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
The VIP Mitglied Technischer Zeichner
Beiträge: 170 Registriert: 06.09.2002 AutoCAD Mechanical 6 unter Windows XP
|
erstellt am: 22. Jul. 2004 12:51 <-- editieren / zitieren --> Unities abgeben:
Hm, ok das hilft mir teilweise. Leider stehe ich nach Ausführung des Makros vor dem Dialogfeld mit der Rahmen und Schriftkopfauswahl. Es stehen zwar schon vorab die richtigen Einstellunge drin, aber ich hätte gerne gehabt, dass das Makro für mich auch das Einfügen und die Plazierung auf den absoluten Nullpunkt (0,0,0) übernimmt. Also per Mausklick direkt den eingefügten Rahmen in der Zeichnung. Kannst du mir da weiterhelfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco Lorenz Mitglied Softwareentwickler, freier Inventor & AutoCAD Händler
Beiträge: 59 Registriert: 18.09.2001 Win NT,2k,XP Pro Acad+Mechanical2k-2005, Inventor 5-9
|
erstellt am: 22. Jul. 2004 19:14 <-- editieren / zitieren --> Unities abgeben: Nur für The VIP
Ja, geht auch. Probier mal (ev. in verschiedenen Kombinationen): Set tbc = tbm.NewContext(kNoUserInput) ' unterdrückt das Dialogfeld tbc.InputPosition = False ' Setzt den Rahmen auf -273° C tbc.InputAttributes = False ' Unterdrückt die Abfrage der Attribute Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
The VIP Mitglied Technischer Zeichner
Beiträge: 170 Registriert: 06.09.2002 AutoCAD Mechanical 6 unter Windows XP
|
erstellt am: 05. Okt. 2004 08:26 <-- editieren / zitieren --> Unities abgeben:
Ich muss nochmal nachfragen. denn irgendwie funktioniert das Makro nicht. Ich hab auch schon versucht durch probieren an die Lösung zu kommen aber es klappt nicht. Der Rahmen/Schriftkopf (welche editierbar sein soll) lädt sich einfach nicht automatisch. Dann hab ich überlegt ob ich einfach den Rahmen über die Blockeinfüge-Funktion herholen soll, aber dann war der Block nicht editierbar. Wie muss das Makro genau aussehen, wenn ich einen A2 Rahmen, 1:20 über ein Makro aug 0,0,0 laden lassen möchte? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Arpi Mitglied
Beiträge: 79 Registriert: 19.04.2002
|
erstellt am: 02. Dez. 2004 09:00 <-- editieren / zitieren --> Unities abgeben: Nur für The VIP
Hallo, hat zu diesem Thema jemand noch einen Tipp, bzg der 'Angabe der Einfügekoordinaten? Ich habe folgendes gemacht, komme aber nicht weiter, weil das Programm nicht auf die x-y-z- Werte reagiert. Code: snip Set bc = tbd.BorderDescriptor bc.Name = "VA3" Set bcP = tbd.BorderDescriptor.Position bcP.X = 20 bcP.Y = 20 bcP.Z = 0 Set tc = tbd.TitleDescriptor tc.Name = "VTITLE" tc.Position.X = 100 tc.Position.Y = 50 tc.Position.Z = 0 snip Beim Rahmen wird nicht nach dem Einfügepunkt gefragt (wegen tbc.InputPosition = False, siehe Code weiter oben) aber beim Schriftkopf wird auf manuelle Eingabe gewartet. Ziel ist es also, den Rahmmen und den Kopf per Programm zu positionieren. ------------------ Tata Rainer Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt! www.fla-nell.de kindermöbel & accessoires Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadvbaguy Mitglied
Beiträge: 1 Registriert: 08.08.2007
|
erstellt am: 08. Aug. 2007 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für The VIP
hallo forum! auch wenns schon einige zeit her ist, möcht' ich dieses thema nochmals aufrollen. bei einer neueren version von autocad mechanical (z.B.: 2007) erscheint nach dem amtitle-command der "page setup manager" (seiteneinrichtungsmanager). dieser erscheint leider auch, wenn man rahmen und schriftfeld per vba hinzufügt. (wie oben beschrieben) derzeit schließe ich dieses dialogfeld per Windows-API. das ist natürlich nicht gerade sauber. meine frage lautet: ist es möglich dieses fenster auszublenden oder gar nicht erst anzuzeigen. cmddia hab ich schon ausprobiert - scheint nicht zu fruchten. ich bendanke mich für eure antworten! p.s.: anbei sende ich den vollständigen code um rahmen und schriftfeld automatisiert einzufügen. funktioniert 1A - (bis auf pagesetupmanager )
Code:
Dim app, dwg As Drawing Set app = GetInterfaceObject("amgpdm.application") Set dwg = app.CurrentDrawing Dim tbm As TitleBorderMgr Set tbm = dwg.TitleBorderMgr Dim tbd As TitleBorderDescriptor Set tbd = tbm.NewDescriptor Dim tbc As TitleBorderContext Set tbc = tbm.NewContext(kNoUserInput) ' Dim bc As BorderDescriptor Set bc = tbd.BorderDescriptor Dim tc As TitleDescriptor Set tc = tbd.TitleDescriptor Call tbd.SetScale(CSng(1)) bc.Name = "A0" bc.Position.X = 0 bc.Position.Y = 0 bc.Position.Z = 0 tc.Position.X = 100 tc.Position.Y = 50 tc.Position.Z = 0 tc.Name = "Titleblock" tbc.InputAttributes = False tbc.InputBorder = False tbc.InputPosition = False tbc.InputScale = False tbc.InputTitle = False Dim Tb As titleborder Set Tb = tbm.CreateTitleBorder(tbd, tbc)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |