Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Attribute aus Exel auslesen

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:  Attribute aus Exel auslesen (1841 mal gelesen)
Thomas C.
Mitglied



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

Beiträge: 326
Registriert: 20.05.2003

Diverse Inventorsysteme

erstellt am: 02. Nov. 2017 11:44    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 Freunde!

ich bin überzeugt diese Frage wurde schon einmal gestellt - aber ich habs so nicht gefunden wie ichs benötige.
Ich habe ne Exceltabelle, die wir für Inventor verwenden, um Werte auszulesen (Auftragsbezogene Infos). über iLogic funktioniert das tadellos.
Durch Aufruf der iLogic Routine wird abgefragt, welche Zeile zum Auslesen verwenden werden soll und dann übernimmt er die Werte dieser Zeile in die entsprechenden benutzerdefinierten iPropierties, die dann auf der Zeichnung entsprechend ausgelesen werden.

Das selbe möchte ich nun für AutoCAD machen. Dort müssts ja mit VBA möglich sein, oder? Kann der iLogic - Code vernünftig in VBA ungewandelt werden? Könnt mir da ev. jemand nen tipp geben? Ich stell das iLogic Macro auch gerne online. Sind ja keine Geheimnisse.

Danke für euren Support
lg
Thomas

------------------
Inventor ist cool...
Inventor ist .... anders...
VAULT macht den Braten erst fett..  ;-)

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 02. Nov. 2017 15:59    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 Thomas C. 10 Unities + Antwort hilfreich

Hallo Thomas,

leider kenne ich Inventor nicht, weshalb ich auch nichts mit iLogic anfangen kann. Evtl. kannst Du den Code ja mal posten dann findet man wohl eine passende Lösung.

Wie das prinzipielle vorgehen wäre siehst Du z.B. hier, es werden Attributdaten bei einem Block mit Werten aus Excel gefüllt. Das gleiche geht natürlich auch andersherum oder von Autocad aus.

Grüße
Klaus 

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

Thomas C.
Mitglied



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

Beiträge: 326
Registriert: 20.05.2003

Diverse Inventorsysteme

erstellt am: 02. Nov. 2017 16:02    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


Attribute_befuellen.txt

 
Anbei der Code

lg
TC

------------------
Inventor ist cool...
Inventor ist .... anders...
VAULT macht den Braten erst fett..  ;-)

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 02. Nov. 2017 16: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 Nur für Thomas C. 10 Unities + Antwort hilfreich

Autocadzeichnung und Exceltabelle (Beispiel) wären auch hilfreich

Grüße
Klaus 

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 29. Dez. 2017 12:39    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 Thomas C. 10 Unities + Antwort hilfreich

Moin,
Projekt Referenz auf excel.exe setzen nicht vergessen !

Sub DRAW_plates_from_excel()

    Dim BLO As AcadBlockReference
    Dim PoLin, sPoLin As Acad3DPolyline    'AutoCAD Polylinie
    Dim Punkt(0 To 5) As Double    'Koordinaten des ersten Segments
    Dim NeuPunkt(0 To 2) As Double
    Dim MidPoint(0 To 2) As Double  'Koordintenfolgepunkte
    Dim EPunkt(0 To 2) As Double    'Koordintenfolgepunkte
    Dim wb As Excel.Workbook
    Dim WTAB As Excel.Worksheet
    Set wb = Excel.Workbooks.Open(SLOPEDIR.PROJECT & "\AP-OVERVIEW-3.xls")
    Set WTAB = wb.Worksheets("AP")

Dim X0 As Double
Dim X1 As Double
Dim y0 As Double
Dim Y1 As Double
Dim z0 As Double
Dim Z1 As Double
    Dim att As Variant
    Dim ATTLIST As Variant

    NR = 7
    Do While Sheets("AP").Cells(NR, 2) <> ""


        x = Sheets("AP").Cells(NR, 15)
        Y = Sheets("AP").Cells(NR, 16)
        z = Sheets("AP").Cells(NR, 14)
        D = Sheets("AP").Cells(NR, 27)


        KKS = MID(Sheets("AP").Cells(NR, 4), 6, 8)
        TYP = "p" & Sheets("AP").Cells(NR, 25)

        If left(D, 1) = "R" And x <= 0 And Y <> 0 Then

            If left(D, 1) = "L" And x <= 0 Then Y = -Y
            If left(D, 1) = "R" And x > 0 Then Y = Y


            NeuPunkt(0) = Y
            NeuPunkt(1) = z
            NeuPunkt(2) = x

            Set BLO = block_insert(NeuPunkt, TYP, 1, 1, 1, 0)
            If BLO.hasattributes Then
                ATTLIST = BLO.GetAttributes
                For i = LBound(ATTLIST) To UBound(ATTLIST)
                    If ATTLIST(i).TAGSTRING = "KKS" Then ATTLIST(i).TEXTSTRING = KKS
                Next
            End If
        End If

        'debug.print  KKS, TYP, Y, Z, X
        NR = NR + 1
    Loop

    'Set WB = Excel.Workbooks.Close
End Sub

Function block_get_attribute(BLO As AcadBlockReference, tagname, Optional found As Boolean = False) As String
    Dim ATTLIST As Variant
    On Error Resume Next
    If BLO.hasattributes Then
        ATTLIST = BLO.GetAttributes
       
        For i = LBound(ATTLIST) To UBound(ATTLIST)
       
            If UCase(ATTLIST(i).TAGSTRING) = tagname Or UCase(Trim(ATTLIST(i).TAGSTRING)) = tagname & "_001" Then
                block_get_attribute = ATTLIST(i).TEXTSTRING
                found = True
                Exit Function

            End If
        Next
    End If
End Function
Sub block_set_attribute(BLO As AcadBlockReference, tagname, tagvalue)
    Dim ATTLIST As Variant
    If BLO Is Nothing Then Exit Sub
    If BLO.hasattributes Then
        tagname = Trim(UCase(tagname))
        ATTLIST = BLO.GetAttributes
        For i = LBound(ATTLIST) To UBound(ATTLIST)
            '''debug.print  "#" & UCase(attlist(i).TagString) & "#", tagname
            If UCase(ATTLIST(i).TAGSTRING) = tagname Or UCase(Trim(ATTLIST(i).TAGSTRING)) = tagname & "_001" Then
                'On Error Resume Next
                ATTLIST(i).TEXTSTRING = "" & tagvalue

                ' attlist(I).Update
                ' On Error GoTo 0
                Exit Sub
            End If
        Next

    End If
End Sub


Guten Rutsch !
Thomas

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 30. Dez. 2017 12:02    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 Thomas C. 10 Unities + Antwort hilfreich

Hallo Thomas (Rexxitall),

Ich glaube das war vergebliche Kopierarbeit (hättest ja auch auf Deinen anderen Thread verlinken können).
Denke Thomas C. sucht hier etwas anderes, Ersatzfunktionen für die in der hochgeladenen Textdatei.
Dabei müßte man zwei Module (Modul GoExcel mit den Funktionen GoExcel.FindRow und GoExcel.CurrentRowValue sowie Modul iProperties mit iProperties.Value) nachbilden, die aus der Tabelle1 der Excelmappe die entsprechende Anlagenzeichnung heraussuchen (Zeile i) und aus den Spaltenüberschriften und der entsprechenden Zeile sich den zu setzenden Text heraussuchen und anschließend die Werte in den Block(?) "Custom" eintragen.

Eigentlich ein leichtes, aber ohne entsprechende Beispiele (wie sind die Spalte benannt? Nur Überschrift oder gesamte Spalte) fehlt mir die Motivation hier selber das alles nachzubilden.

Guten Rutsch und ein schönes Neues Jahr
Klaus 

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

rexxitall
Mitglied
Dipl. -Ing. Bau


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

Beiträge: 266
Registriert: 07.06.2013

Various: systems, Operating systems, cad systems, cad versions, programming languages.

erstellt am: 06. Jan. 2018 10:47    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 Thomas C. 10 Unities + Antwort hilfreich

Hi Klaus, wenn man ein Prblem nur unzureichend beschreibt... So wie ich es verstanden habe, hat er die Möglichkeit aus Inventor heraus auf seine Daten zuzugreifen. - Und somit auch wegzuspeichern. Natürlich ist die Lösung über Zwischendateien das anschließend in ACAD wieder zusammenzufrickeln alles andere als elegant aber dürfte zumindest funktionieren. Es mag möglich sein über die COM Schnittstelle das ganze direkt zu verknüpfen und auszuwerten. Autocad in Inventor einbinden oder umgekehrt. Da ich den Inventor aber nicht benutze kann ich dazu nichts sagen. Copy und paste code hilft übrigens ungemein beim ausprobieren von dingen. Spart zumindest Zeit, da man nicht ale APIS selbst suchen und ausprobieren muss. Nicht alles lässt sich über F1 erschlagen. Und um F1 zu benutzen, muss man das API zumindest schon mal gefunden haben. Was bei der Mächtigkeit des ACAD VBA Apis gar nicht mal so trivial ist.  Guten Rutsch und alles Gute für 2018 

------------------
Wer es nicht versucht, hat schon verlorn 
Und bei 3 Typos gibts den vierten gratis !
<<< for sale !

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2624
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2022
Plateia, Canalis
Visual Basic

erstellt am: 06. Jan. 2018 19:35    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 Thomas C. 10 Unities + Antwort hilfreich

Hallo Thomas,
Inventor kenne ich auch nicht, deshalb ja die Nachfrage nach Beispielzeichnung und das Fragezeichen hinter Block.
Wäre ja auch möglich dass es Texte sind deren Inhalt ausgetauscht werden müssen und anstelle von Attributen wird der Bezug über XData hergestellt (wie das z.B. bei Canalis der Fall ist)

Grüße,
Klaus 

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

Thomas C.
Mitglied



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

Beiträge: 326
Registriert: 20.05.2003

Diverse Inventorsysteme

erstellt am: 08. Jan. 2018 08:12    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


AZ-Werte.txt

 
Hi Leute

vielen Dank für eure Mühe. Es gibt wohl noch einige Missverständnisse

- Die Daten werden im Excel in einer Zeile erfasst ( es sind dort Berechnungen hinterlegt)
- Die Daten müssen nur ausgelesen werden - es wird nichts zurückgespeichert
- Der Bezug ist immer die erste Spalte der Excel - Tabelle

Ich hab nun die Excel - Datei (txt in xlsx ändern) und die AutoCAD - Datei hochgeladen.
Es geht um den Block "Technische Angaben zur Anlage", welcher im Layout A3 sichtbar ist.

Danke für eure Mühe!!

glg
TC

------------------
Inventor ist cool...
Inventor ist .... anders...
VAULT macht den Braten erst fett..  ;-)

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

Thomas C.
Mitglied



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

Beiträge: 326
Registriert: 20.05.2003

Diverse Inventorsysteme

erstellt am: 08. Jan. 2018 08:16    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


AZ_ACAD2016.dwg.txt

 
Hier noch die dwg - datei

------------------
Inventor ist cool...
Inventor ist .... anders...
VAULT macht den Braten erst fett..  ;-)

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