| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Block - Attribute (3249 mal gelesen)
|
rrrrough Mitglied
Beiträge: 18 Registriert: 15.08.2003
|
erstellt am: 31. Mrz. 2004 10:17 <-- editieren / zitieren --> Unities abgeben:
ich wende mich mit folgendem problem an euch: ich versuche attribute aus einer BlockReferenz auszulesen auszulesen: Attribute = DerBlock.GetAttributes das funktioniert wenn der Block innerhalb der zeichnung mit BLOCK definiert wurde das funktioniert nicht wenn der block als file in die zeichnung eingefügt wurde (die angegebene Programmzeile wird mit der Fehlermeldung quittiert: Objekt wurde gelöscht) warum ist das so? wie kann ich auf die attribute aus dem file zugreifen? ------------------ leute: vielen dank 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: 31. Mrz. 2004 16:09 <-- editieren / zitieren --> Unities abgeben: Nur für rrrrough
|
harryk Mitglied Projektleiter
Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 31. Mrz. 2004 16:33 <-- editieren / zitieren --> Unities abgeben: Nur für rrrrough
|
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Die Phönizier haben das Geld erfunden - aber warum so wenig? (Johann Nepomuk Nestroy)
|
erstellt am: 31. Mrz. 2004 21:34 <-- editieren / zitieren --> Unities abgeben: Nur für rrrrough
Keine Ahnung, was du da machst - es ist völlig egal, wie der Block zustande gekommen ist. Ich vermute, du verwechselst irgendwo was (z.B. de Unterschied zwischen einem Block (der niemals Attribute haben kann!) und einem Insert (= Blockreferenz). Es ist völlig unerheblich, ob die Block-Definition in einer Zeichnung erzeugt wurde oder aus einer Datei stammt, denn der Block spielt bei Attributen nur in dem Augenblick eine Rolle, in dem das Insert erzeugt wird. Später kann die Blockdefinition verändert werden, d.h. ein Insert kann Attribute haben, zu denen keine Attributsdefinition im Block vorliegt. Der folgende Code liest Attribute aus, und zwar - wie gesagt - völlig unabhängig davon, was in der Blocktabelle steht: Code:
Option Explicit Option Base 0Public Sub test() Dim obj As Object Dim sPoint As Variant Dim Atts As Variant Dim myAtt As IAcadAttributeReference Dim i As Integer ThisDrawing.Utility.GetEntity obj, sPoint, "Insert wählen: " If (obj.EntityName = "AcDbBlockReference") Then Atts = obj.GetAttributes For i = 0 To UBound(Atts) - 1 Set myAtt = Atts(i) Debug.Print TypeName(myAtt) ' => IAcadAttributeReference Next i End If End Sub
Laß dich nicht davon verwirren, dass die AutoCAD-Terminologie völlig konfus ist - so heißen die Dinge: Code:
in der Blocktabelle / in der ZeichnungAllgemein: Block(-definition) Blockreferenz, Insert AutoCAD: BLOCK INSERT VBA/VLAX: AcadBlock AcadBlockReference ObjectARX: AcDbBlockTableRecord AcDbBlockReference C#/VB.NET: BlockTableRecord BlockReference Allgemein: Attributsdefinition Attribut AutoCAD: ATTDEF ATTRIB VBA/VLAX: AcadAttribute AcadAttributeReference ObjectARX: AcDbAttributeDefinition AcDbAttribute C#/VB.NET: AttributeDefinition Attribute
Wie man sieht, ist AutoDesk sehr um eine einheitliche Nomenklatur bemüht;-) HTH + Gruß, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rrrrough Mitglied
Beiträge: 18 Registriert: 15.08.2003
|
erstellt am: 02. Apr. 2004 07:56 <-- editieren / zitieren --> Unities abgeben:
also vielen dank für die unterstützung - insbesondere für den code. so konnte ich sehen das ich eigentlich alles richtig gemacht habe, nur: den funktionsaufruf habe ich von einer UserForm ausgelöst, die per UserForm.Show vbModeless eingeblendet. und kurios, kurios in genau diesem fall funktioniert getAttributes nur noch wenn der block in der zeichnung erstellt wurde. also: Forms normal einblenden ... danke ------------------ leute: vielen dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Die Phönizier haben das Geld erfunden - aber warum so wenig? (Johann Nepomuk Nestroy)
|
erstellt am: 02. Apr. 2004 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für rrrrough
Das halte ich nach wie vor für ein Gerücht. Es ist völlig egal, ob eine Blockdefinition in der Zeichnung erzeugt oder aus einer Datei importiert wurde. a) steht in der Blocktabelle hinterher das Selbe drin, und b) wird die Blocktabelle bei dieser Geschichte nicht mal tangiert, weil die Attribute am Insert kleben. Ich habe es ja schon mal gesagt: Die Blockdefinition kann auch ganz andere oder gar keine Attdefs enthalten - macht auch nix. Ich habe mir die Mühe gemacht und versucht, deine Aussage zu verifizieren: Es ist nicht nachvollziehbar. Egal, ob ich einen Block erzeuge oder über -insert von der Platte einfüge, egal auch, ob der Dialog modal oder modeless läuft: Es funktioniert immer. Es bleibt dabei: Irgendetwas verwechselst du. Ich weiss nur nicht was. Gruß, Axel ------------------ Meine AutoLisp-Seiten Meine private Homepage Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Meine Überzeugung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rrrrough Mitglied
Beiträge: 18 Registriert: 15.08.2003
|
erstellt am: 03. Apr. 2004 08:41 <-- editieren / zitieren --> Unities abgeben:
ja, wahrscheinlich verwechsle ich was ... sind ja noch die ersten versuche. aber ich schwöre: ich hatte in der gleichen zeichnung die verschiedenen blöcke, die mit der gleichen schleife abgefragt wurden. Selbstverständlich waren beide in der Blockauflistung - nur von einem waren die attribute nicht zu bekommen - fehlermeldung: ist aber egal, dank deiner Hilfe und Bempühungen konnte ich das problem ja lösen - läuft jetzt wie am schnürchen. ben ------------------ leute: vielen dank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |