Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  z-koordinate aus attributen schreiben

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
  
PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
Autor Thema:  z-koordinate aus attributen schreiben (940 mal gelesen)
m.neu
Mitglied


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

Beiträge: 3
Registriert: 02.12.2004

erstellt am: 02. Dez. 2004 09:55    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
habe folgendes Problem. Hab eine A-Cad Zeichnung (Lageplan) bekommen die als z-Wert nur 0 enthält, aber alle Punkte sind Blöcke die in den Attributen die Höhe eingetragen haben. Hab mir nun aus den anderen Beiträgen ein Programm zusammengeschustert, das die Blöcke mit Attribut Höhe herausfiltert und in eine Excel-Datei schreibt. Klappt auch wunderbar, nur würd ich jetzt gern die ausgefilterte Höhe gleich als z-Koordinate des Blocks zurückschreiben. Kann eigentlich ja nicht so schwer sein, bin aber Neuling mit VBA in A-CAD.
Anbei das Listing:
Sub Ch12_Extract()
    Dim Excel As Excel.Application
    Dim ExcelSheet As Object
    Dim ExcelWorkbook As Object
   
    Dim rownum As Integer
    Dim Header As Boolean
    Dim elem As AcadEntity
    Dim ip As Variant
    Dim Array1 As Variant
    Dim Count As Integer
   
    ' Excel starten.
    Set Excel = New Excel.Application
   
    ' Erstellen einer neuen Arbeitsmappe und Suchen des aktiven Arbeitsblatts.
    Set ExcelWorkbook = Excel.Workbooks.Add
    Set ExcelSheet = Excel.ActiveSheet
    ExcelWorkbook.SaveAs "d:\transfer\Attribute.xls"
   
   
    rownum = 1
    Header = False
    ' Modellbereich durchlaufen, um
    ' alle Blockreferenzen zu finden.
    For Each elem In ThisDrawing.ModelSpace
        With elem
            ' Gefundene Blockreferenz auf
            ' Attribute prüfen
            If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then
               
                If .HasAttributes Then
                    ' Attribute abrufen
                    Array1 = .GetAttributes
                   
                   
                    For Count = LBound(Array1) To UBound(Array1)
                      '  ExcelSheet.Cells(rownum, Count * 2 + 4).Value = Array1(Count).TagString
                      '  ExcelSheet.Cells(rownum, Count * 2 + 5).Value = Array1(Count).TextString
                        If Val(Array1(Count).TextString) > 400 And Val(Array1(Count).TextString) < 600 Then
                        ip = elem.InsertionPoint
                              With ExcelSheet
                                  .Cells(rownum, 1) = ip(0)
                                  .Cells(rownum, 2) = ip(1)
                                  .Cells(rownum, 3) = ip(2)
'Der bestehende z-Wert =0
                              End With
                            ExcelSheet.Cells(rownum, 5).Value = Array1(Count).TagString
                            ExcelSheet.Cells(rownum, 6).Value = Array1(Count).TextString ' Mein neuer z-Wert
                          rownum = rownum + 1
                        End If
                       
                    Next Count
                 
                End If
            End If
        End With
    Next elem
    Excel.Application.Quit
End Sub

------------------
Vielen Dank für die Hilfe

Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 02. Dez. 2004 11:05    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 m.neu 10 Unities + Antwort hilfreich

ohne jetzt viel in deinem code gestöbert zu haben.
den Z Einfügepunkt des Blockes kannst du so ändern

ep = elem.InsertionPoint ' einfügepunkt in variable ep speichern
ep(2) = 50 ' ep(2) (= z -wert) auf neuen wert ändern
elem.InsertionPoint = ep ' geänderten ep in den Block zurüclschreiben

das musst du nur an passender stellen in deinem code unterbringen
(natürlich nicht mit Z=50 :-)

------------------
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

m.neu
Mitglied


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

Beiträge: 3
Registriert: 02.12.2004

erstellt am: 02. Dez. 2004 11:36    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

Das wär's gewesen. Das Rückschreiben hat mir gefehlt.
Leider kommt jetzt die Fehlermeldung:
"Unzulässiger Prozeduraufruf oder ungültiges Argument (Fehler 5)"
ip(2) = Val(Array1(Count).TextString) 'ok
elem.InsertionPoint = ip(2) 'Fehlermeldung

ip(2)=475,54 Typ Variant /Double laut Direktüberwachung beim Abbruch

Ne Ahnung woran das liegen kann

------------------
Vielen Dank für die Hilfe

Markus

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 02. Dez. 2004 11:42    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 m.neu 10 Unities + Antwort hilfreich

du gibst ja nur diem z-koordinate zurück

elem.InsertionPoint = ip(2) 'Fehlermeldung

richtig:
elem.InsertionPoint = ip 

------------------
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Anzeige:Infos zum Werbeplatz >>

GeoVisual Civil Engineer CAD APP für 3D, Tiefbau, AEC - Architektur-, Ingenieur- und Bauwesen

Die benutzerfreundliche Softwarelösung zur Visualisierung von Infrastrukturplanungen

m.neu
Mitglied


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

Beiträge: 3
Registriert: 02.12.2004

erstellt am: 02. Dez. 2004 11:53    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

So jetzt hab ich es doch noch rausgefunden
elem.InsertionPoint = ip  ohne index muß es heißen

Vielen Dank nochmal

------------------
Vielen Dank für die Hilfe

Markus

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)2025 CAD.de | Impressum | Datenschutz