Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Rahmen+Schriftkopf mit VBA einfügen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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


Sehen Sie sich das Profil von The VIP an!   Senden Sie eine Private Message an The VIP  Schreiben Sie einen Gästebucheintrag für The VIP

Beiträge: 170
Registriert: 06.09.2002

AutoCAD Mechanical 6 unter Windows XP

erstellt am: 22. Jul. 2004 08:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Marco Lorenz an!   Senden Sie eine Private Message an Marco Lorenz  Schreiben Sie einen Gästebucheintrag für Marco Lorenz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für The VIP 10 Unities + Antwort hilfreich


pdmsdk.zip

 
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


Sehen Sie sich das Profil von The VIP an!   Senden Sie eine Private Message an The VIP  Schreiben Sie einen Gästebucheintrag für The VIP

Beiträge: 170
Registriert: 06.09.2002

AutoCAD Mechanical 6 unter Windows XP

erstellt am: 22. Jul. 2004 12:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Marco Lorenz an!   Senden Sie eine Private Message an Marco Lorenz  Schreiben Sie einen Gästebucheintrag für Marco Lorenz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für The VIP 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von The VIP an!   Senden Sie eine Private Message an The VIP  Schreiben Sie einen Gästebucheintrag für The VIP

Beiträge: 170
Registriert: 06.09.2002

AutoCAD Mechanical 6 unter Windows XP

erstellt am: 05. Okt. 2004 08:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Arpi an!   Senden Sie eine Private Message an Arpi  Schreiben Sie einen Gästebucheintrag für Arpi

Beiträge: 79
Registriert: 19.04.2002

erstellt am: 02. Dez. 2004 09:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für The VIP 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von cadvbaguy an!   Senden Sie eine Private Message an cadvbaguy  Schreiben Sie einen Gästebucheintrag für cadvbaguy

Beiträge: 1
Registriert: 08.08.2007

erstellt am: 08. Aug. 2007 11:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für The VIP 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz