Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor VBA
  Importieren von Punkten aus Excel mit dem Namen

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:  Importieren von Punkten aus Excel mit dem Namen (2203 mal gelesen)
SifiCAD
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 25.04.2016

Revit, Rhinocerur, Auto
Cad, Solid Works, Catia,
NX Siemens, Inventor

erstellt am: 15. Aug. 2017 15: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

Hallo liebe CAD Gemeinde,

Wie kann ich Punkte aus Excel mit dem Namen importieren.
Also ‚Name, X,Y,Z. Der Name soll dann in der Bezeichnung des Punktes stehen. Auf der Internet Seit vom Autodesk habe ich einen VBA Skript runtergeladen, wenn ich denn ausführe gehen aber nicht die Namen mit, von der Bezeichnung des Punkts.

Für Ihre große Hilfe bin ich ihnen im Voraus sehr dankbar.

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

Michael Puschner
Ehrenmitglied V.I.P. h.c.
Rentner



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

Beiträge: 12982
Registriert: 29.08.2003

erstellt am: 15. Aug. 2017 18: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 SifiCAD 10 Unities + Antwort hilfreich

Hierzu müsste das VBA Script wohl entsprechend erweitert werden.

------------------
Michael Puschner
Autodesk Inventor Certified Expert
Autodesk Inventor Certified Professional
Mensch und Maschine Scholle GmbH

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

SifiCAD
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 25.04.2016

Revit, Rhinocerur, Auto
Cad, Solid Works, Catia,
NX Siemens, Inventor

erstellt am: 15. Aug. 2017 18:07    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 Michael,

Vielen Dank für die Antwort. Haben Sie vielleicht eine Ahnung wie das geht, oder wo ich mir Informationen dafür holen kann.

Gruß
Alex

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

Michael Puschner
Ehrenmitglied V.I.P. h.c.
Rentner



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

Beiträge: 12982
Registriert: 29.08.2003

erstellt am: 15. Aug. 2017 19:40    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 SifiCAD 10 Unities + Antwort hilfreich

Ich verschiebe das Thema in das IV VBA Forum:

http://ww3.cad.de/cgi-bin/ubb/forumdisplay.cgi?action=topics&forum=Inventor+VBA&number=258

Dort wird man sicherlich in dieser Sache besser helfen können.

------------------
Michael Puschner
Autodesk Inventor Certified Expert
Autodesk Inventor Certified Professional
Mensch und Maschine Scholle GmbH

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

Ticky72
Mitglied



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

Beiträge: 35
Registriert: 17.02.2016

Inventor 2019
Win7 64Bit

erstellt am: 18. Aug. 2017 10:24    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 SifiCAD 10 Unities + Antwort hilfreich

Hi Alex,

wenn Du Hilfe brauchst, wären mehr Infos zu deinem Problem sinnvoll.
Am wichtigsten ist wohl, das VBA Skript hier mal zu posten.

Viele Grüße
Helmut

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

SifiCAD
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 25.04.2016

Revit, Rhinocerur, Auto
Cad, Solid Works, Catia,
NX Siemens, Inventor

erstellt am: 21. Aug. 2017 07:22    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 Helmut,

erstmals vielen dank für deine Bereitschaft mir zu helfen. Hier sind die zwei VBA Skripte, ein Skript um die Punkte aus Inventor auszulesen und ein Skript um die Punkte einzulesen. Der Skript der die Punkte ausließt importiert keine Punktnamen.(Die Excel Tabelle muss immer offen sein, damit man die Punkte importiert).

Vielen Dank nochmals und einen schönen Start in die Arbeitswoche.    

VBA Skript um die Punkte auszulesen:

Sub ExportWorkpoints_ipt()
    ' Get the active part document.
    Dim partDoc As PartDocument
    If ThisApplication.ActiveDocumentType = kPartDocumentObject Then
        Set partDoc = ThisApplication.ActiveDocument
    Else
        MsgBox "Ein Bauteil (*.ipt) muss geöffnet bzw. aktiv sein."
        Exit Sub
    End If
   
    ' Check to see if any work points are selected.
    Dim points() As WorkPoint
    Dim pointCount As Long
    pointCount = 0
    If partDoc.SelectSet.Count > 0 Then
        ' Dimension the array so it can contain the full
        ' list of selected items.
        ReDim points(partDoc.SelectSet.Count - 1)
       
        Dim selectedObj As Object
        For Each selectedObj In partDoc.SelectSet
            If TypeOf selectedObj Is WorkPoint Then
                Set points(pointCount) = selectedObj
                pointCount = pointCount + 1
            End If
        Next
       
        ReDim Preserve points(pointCount - 1)
    End If
   
    ' Ask to see if it should operate on the selected points
    ' or all points.
    Dim getAllPoints As Boolean
    getAllPoints = True
    If pointCount > 0 Then
        Dim result As VbMsgBoxResult
        result = MsgBox("Einige Arbeitspunkte sind ausgewählt.  " & _
                "Sollen nur die ausgewählten Arbeitspunkte " & _
                "exportiert werden?  " & Chr(13) & Chr(13) & _
                "(Antwort ""Nein"" exportiert alle Arbeitspunkte)", _
                vbQuestion + vbYesNoCancel)
        If result = vbCancel Then
            Exit Sub
        End If
   
        If result = vbYes Then
            getAllPoints = False
        End If
    Else
        If MsgBox("Es sind keine Arbeitspunkte ausgewählt.  Alle Arbeitspunkte" & Chr(13) & _
                  " werden exportiert.  " & Chr(13) & Chr(13) & "Möchten Sie fortfahren?", _
                  vbQuestion + vbYesNo) = vbNo Then
            Exit Sub
        End If
    End If
   
    Dim partDef As PartComponentDefinition
    Set partDef = partDoc.ComponentDefinition
    If getAllPoints Then
        ReDim points(partDef.WorkPoints.Count - 1)                  'um den Mittelpunkt auszulassen muss anstelle von -1 hier -2 stehen
       
        ' Get all of the workpoints.
        ' for skipping the first, which is the origin point, i must start with 2
        Dim i As Integer
        For i = 1 To partDef.WorkPoints.Count                      'um den Mittelpunkt auszulassen muss für anstelle von 1 hier 2 stehen
            Set points(i - 1) = partDef.WorkPoints.Item(i)          'um den Mittelpunkt auszulassen muss anstelle von -1 hier -2 stehen
        Next
    End If
   
   
   
   
'-----------------------------------------------------------------------
'  Abfrage Weltkoordinaten
'-----------------------------------------------------------------------
   
    Dim WeltKoorDia As VbMsgBoxResult
    WeltKoorDia = MsgBox("Wollen Sie Werte für Weltkoordinaten eingeben?  " & Chr(13) & Chr(13) & _
                "Die einzugebenden Werte entsprechen den Weltkoordinaten des Mittelpunktes " & Chr(13) & _
                "und werden zu den ausgelesenen Koordinatenwerten der Arbeitspunkte hinzuaddiert.", _
                vbQuestion + vbYesNoCancel)
    If WeltKoorDia = vbCancel Then
        Exit Sub
    End If
   
    If WeltKoorDia = vbYes Then
   
           
        Dim xCoordWelt As Double
        Dim yCoordWelt As Double
        Dim zCoordWelt As Double
        Dim Welt_Winkel_Wert As Double, Welt_Winkel As Double
   
        WeltKoor.Show
   
        xCoordWelt = WeltKoor.txt_x
        yCoordWelt = WeltKoor.txt_y
        zCoordWelt = WeltKoor.txt_z
           
        Welt_Winkel_Wert = WeltKoor.txt_grd
        Welt_Winkel = Welt_Winkel_Wert * 3.14159265359 / 180
           
    End If
 
   

   
'-----------------------------------------------------------------------
'  Dialog zum Erstellen der Dateien
'-----------------------------------------------------------------------
    ' Get the filename to write to.
    Dim dialog As FileDialog
    Dim Dateiname_xls As String
   
    Dateiname_xls = Left(ThisApplication.ActiveDocument.FullFileName, _
    Len(ThisApplication.ActiveDocument.FullFileName) - 4) + ".xls"
   
    Call ThisApplication.CreateFileDialog(dialog)
    With dialog
        .DialogTitle = "Ausgabedatei *.XLS-Format"
        .Filter = "Microsoft Office Excel-Datei (*.xls)|*.xls"
        .FilterIndex = 0
        .OptionsEnabled = False
        .MultiSelectEnabled = False
        .CancelError = False
        .filename = Dateiname_xls
        .ShowSave
        Dateiname_xls = .filename
       
    End With


'-----------------------------------------------------------------------
'  Erstellen der Excel-Datei im *.csv-Format
'-----------------------------------------------------------------------

    Dim filename_csv As String
   
    If Dateiname_xls <> "" And Len(Dateiname_xls) >= 4 Then
        Dateiname_csv = Left(Dateiname_xls, Len(Dateiname_xls) - 4) + ".csv"
       
        ' Write the work point coordinates out to a csv file.
        On Error Resume Next
        Open Dateiname_csv For Output As #1
        If Err.Number <> 0 Then
            MsgBox "Die angegebene Datei kann nicht geöffnert werden. " & _
                  "Die Datei ist eventuell durch einen anderen Prozess geöffnet."
            Exit Sub
        End If
       
       
        ' Get a reference to the object to do unit conversions.
        Dim uom As UnitsOfMeasure
        Set uom = partDoc.UnitsOfMeasure
       
        ' Write the points, taking into account the current default
        ' length units of the document.
        Print #1, "Bezeichnung" & "    " & _
                "X-Koordinate" & "    " & _
                "Y-Koordinate" & "    " & _
                "Z-Koordinate"
       
        For i = 0 To UBound(points)
            Dim xCoord As Double
            xCoord = uom.ConvertUnits(points(i).Point.X, _
                kCentimeterLengthUnits, kDefaultDisplayLengthUnits)
                   
            Dim yCoord As Double
            yCoord = uom.ConvertUnits(points(i).Point.Y, _
                kCentimeterLengthUnits, kDefaultDisplayLengthUnits)
                   
            Dim zCoord As Double
            zCoord = uom.ConvertUnits(points(i).Point.Z, _
                kCentimeterLengthUnits, kDefaultDisplayLengthUnits)
                   
            Print #1, points(i).Name & "    " & _
                Format(Cos(Welt_Winkel) * xCoord - Sin(Welt_Winkel) * yCoord + xCoordWelt, "0.000") & "    " & _
                Format(Sin(Welt_Winkel) * xCoord + Cos(Welt_Winkel) * yCoord + yCoordWelt, "0.000") & "    " & _
                Format(zCoord + zCoordWelt, "0.000")
        Next
       
        Close #1
       
    Else

        Exit Sub
   
    End If


'-----------------------------------------------------------------------
'  Erstellen der Excel-Datei im *.xls-Format
'-----------------------------------------------------------------------
    'Create a new Excel instance
    Dim oExcelApplication As Excel.Application
    Set oExcelApplication = New Excel.Application

    'create a new excel workbook
    Dim oBook As Excel.Workbook
    Set oBook = oExcelApplication.Workbooks.Add()
    Dim oSheet As Excel.WorkSheet
    Set oSheet = oBook.ActiveSheet
 
    Dim nRow As Integer
    nRow = 2

    'Spaltenüberschriften
        oSheet.Cells(1, 1) = "Bezeichnung"
        oSheet.Cells(1, 1).Font.Bold = True
       
        oSheet.Cells(1, 2) = "X-Koordinate"
        oSheet.Cells(1, 2).Font.Bold = True
       
        oSheet.Cells(1, 3) = "Y-Koordinate"
        oSheet.Cells(1, 3).Font.Bold = True
       
        oSheet.Cells(1, 4) = "Z-Koordinate"
        oSheet.Cells(1, 4).Font.Bold = True
       
    'write the coordinates into separate columns, one workpoint each row
        For i = 0 To UBound(points)
            xCoord = uom.ConvertUnits(points(i).Point.X, _
                kCentimeterLengthUnits, kDefaultDisplayLengthUnits)
                   
            yCoord = uom.ConvertUnits(points(i).Point.Y, _
                kCentimeterLengthUnits, kDefaultDisplayLengthUnits)
                   
            zCoord = uom.ConvertUnits(points(i).Point.Z, _
                kCentimeterLengthUnits, kDefaultDisplayLengthUnits)
                   
       
        oSheet.Cells(nRow, 1) = points(i).Name
        oSheet.Cells(nRow, 2) = Cos(Welt_Winkel) * xCoord - Sin(Welt_Winkel) * yCoord + xCoordWelt
        oSheet.Cells(nRow, 3) = Sin(Welt_Winkel) * xCoord + Cos(Welt_Winkel) * yCoord + yCoordWelt
        oSheet.Cells(nRow, 4) = zCoord + zCoordWelt
        nRow = nRow + 1
       
        Next
   
    oSheet.Columns(1).EntireColumn.AutoFit
    oSheet.Columns(2).EntireColumn.AutoFit
    oSheet.Columns(3).EntireColumn.AutoFit
    oSheet.Columns(4).EntireColumn.AutoFit
   
    oSheet.Cells(nRow + 1, 1) = ThisApplication.ActiveDocument.FullFileName
   
     
    On Error Resume Next
    oBook.SaveAs (Dateiname_xls)
    oBook.Close
    Set oBook = Nothing
    Set oSheet = Nothing
    Set oExcelApplication = Nothing
 
'-----------------------------------------------------------------------
       
       
    MsgBox "Das Schreiben der Dateien ist beendet. " & Chr(13) & Chr(13) & _
          "Die Daten befinden sich in den beiden Dateien: " & Chr(13) & Chr(13) & _
          "- """ & Dateiname_xls & "" & Chr(13) & _
          "- """ & Dateiname_csv & """"

'Microsoft Excel starten und ein bestehendes Worksheet-Objekt öffnen.
    Set ExcelWorkSheet = GetObject("Dateiname_xls")


   
End Sub

               

Skript um die punkte einzulesen:


Option Explicit

Private oExcel As Excel.Application
Private oSheet As Excel.WorkSheet
Private oPartDoc As PartDocument

Private Sub CloseSpline_Click()

End Sub

Private Sub UserForm_Initialize()
   
    Set oPartDoc = ThisApplication.ActiveDocument
    Set oExcel = GetObject(, "Excel.Application")
    Set oSheet = oExcel.ActiveSheet
     
End Sub

Private Sub UserForm_Terminate()
   
    Set oPartDoc = Nothing
    Set oExcel = Nothing
    Set oSheet = Nothing
   
End Sub

Private Sub Create3DSpline_Click()
    If Create3DSpline.Value = True Then
        Createpolyline.Value = False
        CloseSpline.Enabled = True
        Createpolyline.Value = False
    Else
        CloseSpline.Enabled = False
        Createpolyline.Value = True
    End If
End Sub

Private Sub CreatePolyline_Click()
    If Createpolyline.Value = True Then
        Create3DSpline.Value = False
        CloseSpline.Enabled = False
        Closepolyline.Enabled = True
    Else
        Closepolyline.Enabled = False
        Create3DSpline.Value = True
    End If
End Sub

Private Sub OKButton_Click()
   
    Dim bCreateSpline As Boolean
    Dim bCreatePolyline As Boolean
    bCreateSpline = Create3DSpline.Value
    bCreatePolyline = Createpolyline.Value
   
    Dim bCloseSpline As Boolean
    bCloseSpline = CloseSpline.Value
   
    Dim bClosePolyline As Boolean
    bClosePolyline = Closepolyline.Value
   
    ThisApplication.UserInterfaceManager.UserInteractionDisabled = True
   
    Dim oDef As PartComponentDefinition
    Set oDef = oPartDoc.ComponentDefinition
   
    Dim oPoints As ObjectCollection
    Set oPoints = ThisApplication.TransientObjects.CreateObjectCollection
   
    Dim oUsedRange As Range
    Set oUsedRange = oSheet.UsedRange
   
    Dim oRowCount As Long
    oRowCount = oSheet.Range("A65536").End(xlUp).Row
   
    Dim i As Integer
    For i = 1 To oRowCount
        Dim strx As String, stry As String, strz As String
        strx = oUsedRange.Cells(i, CInt(ColumnX.Text))
        stry = oUsedRange.Cells(i, CInt(ColumnY.Text))
        strz = oUsedRange.Cells(i, CInt(ColumnZ.Text))
       
        Dim x As Double, y As Double, z As Double
        x = oPartDoc.UnitsOfMeasure.GetValueFromExpression(strx, kDatabaseLengthUnits)
        y = oPartDoc.UnitsOfMeasure.GetValueFromExpression(stry, kDatabaseLengthUnits)
        z = oPartDoc.UnitsOfMeasure.GetValueFromExpression(strz, kDatabaseLengthUnits)
       
        Dim oPoint As Point
        Set oPoint = ThisApplication.TransientGeometry.CreatePoint(x, y, z)
       
        Dim oWorkPoint As WorkPoint
        Set oWorkPoint = oDef.WorkPoints.AddFixed(oPoint)
       
        Call oWorkPoint.AttributeSets.Add("ImportedFromExcel").Add("Index", kIntegerType, i)
       
        oPoints.Add oWorkPoint
    Next
   
    Dim oClientFeatures As ClientFeatures
    Set oClientFeatures = oDef.Features.ClientFeatures

    'Create a client feature definition by adding the selected items
    Dim oClientFeatureDef As ClientFeatureDefinition
    Set oClientFeatureDef = oClientFeatures.CreateDefinition("Imported Work Points", oPoints.Item(1), oPoints.Item(oPoints.Count))
   
    Dim oCFE As ClientFeatureElement
    For Each oCFE In oClientFeatureDef.ClientFeatureElements
        oCFE.BrowserVisible = True
        oCFE.UserEditable = True
        oCFE.HighlightWithFeature = False
    Next

    ' Create the client feature
    Dim oClientFeature As ClientFeature
    Set oClientFeature = oClientFeatures.Add(oClientFeatureDef, "ImportedWorkPointsClientId")

    Dim oSketch3D As Sketch3D
    Set oSketch3D = oDef.Sketches3D.Add
   
    If bCreateSpline Then
       

       
        Dim oSpline As SketchSpline3D
        Set oSpline = oSketch3D.SketchSplines3D.Add(oPoints)
       
        If bCloseSpline Then
            oSpline.closed = True
        End If
    End If
   
    If bCreatePolyline Then
        For i = 1 To oPoints.Count - 1
            Call oSketch3D.SketchLines3D.AddByTwoPoints(oPoints(i), oPoints(i + 1), False)
        Next
     
        If bClosePolyline Then
          Call oSketch3D.SketchLines3D.AddByTwoPoints(oPoints(oPoints.Count), oPoints(1), False)
        End If
    End If
   
    Set oSpline = Nothing
    Set oSketch3D = Nothing
    ThisApplication.UserInterfaceManager.UserInteractionDisabled = False
    ThisApplication.ActiveView.Fit
    Unload Me
End Sub

Private Sub CancelButton_Click()
    Unload Me
    ThisApplication.UserInterfaceManager.UserInteractionDisabled = False
End Sub

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

Ticky72
Mitglied



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

Beiträge: 35
Registriert: 17.02.2016

Inventor 2019
Win7 64Bit

erstellt am: 21. Aug. 2017 10: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 SifiCAD 10 Unities + Antwort hilfreich

Hallo Alex,

leider kann ich nicht ausprobieren ob es funktioniert, da mir dazu das Formular zum Einlesen fehlt. Beim Export wird der Name des Arbeitspunktes in die erste Spalte geschrieben, also würde ich mal folgendes probieren:
Suche dir im Skript zum Importieren folgende Zeile:

Code:

oPoints.Add oWorkPoint


und füge folgende Zeile danach ein:
Code:

oWorkPoint.Name = oUsedRange.Cells(i, 1)


Wenn der Name in einer anderen Spalte steht, einfach die '1' demenstprechend ersetzen.
Es es zu Beachten, dass es zu einer Fehlermeldung kommt, wenn
ein Arbeitspunkt mit diesem Name schon in der IPT-Datei vorhanden ist oder in Excel doppelt vergeben wird.

Schöne Grüße
Helmut

[Diese Nachricht wurde von Ticky72 am 21. Aug. 2017 editiert.]

[Diese Nachricht wurde von Ticky72 am 21. Aug. 2017 editiert.]

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

SifiCAD
Mitglied
Konstrukteur


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

Beiträge: 27
Registriert: 25.04.2016

Revit, Rhinocerur, Auto
Cad, Solid Works, Catia,
NX Siemens, Inventor

erstellt am: 23. Aug. 2017 09:11    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

Super Vielen Dank!!!! Es hat geklappt.
             

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

FroSte
Mitglied
Bauingenieur


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

Beiträge: 20
Registriert: 09.06.2009

Inventor 2021

erstellt am: 12. Dez. 2022 19:41    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 SifiCAD 10 Unities + Antwort hilfreich

Hallo Helmut,
wir verwenden die von Alex oben beschriebenen VBA-Skripte ebenfalls. Das erstere stammt sogar teilweise von mir - mit Unterstützung aus diesem Forum.

Zu dem zweiten Skript gibt es auch noch eine Update-Funktion. Diese bewirkt, dass sich bei Änderungen der Koordinaten in der Exceltabelle die Lage der Arbeitspunkte in dem Bauteil angepasst werden.
Es werden allerdings nur die Koordinaten aktualisiert. Ich würde gerne auch noch die Namen der Arbeitspunkte anpassen/aktualisieren. Ich bin mir aber nicht sicher, wo und wie ich es einfügen müsste.

Geht das mit folgender Zeile:
oWorkPoint.Name = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, 1)

Wäre hier die richtige Stelle?

Code:

        Dim oWorkPoint As WorkPoint
        If oClientFeature Is Nothing Then
            Set oWorkPoint = oWorkPoints.Item(1)
            oWorkPoint.Name = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, 1)
        Else
            For Each oWorkPoint In oWorkPoints
                If oWorkPoint.OwnedBy Is oClientFeature Then
                    Exit For
                End If
            Next
        End If


Dies scheint nicht der Fall zu sein, denn es ändert sich nichts dadurch. Die Namen der Arbeitspunkte werden nicht angepasst.


Hier ist der vollständige Code für die Update-Funktion:

Code:

Private Sub OKButton_Click()
   
    On Error Resume Next
   
    'ThisApplication.UserInterfaceManager.UserInteractionDisabled = True
   
    Dim oUsedRange As Range
    Set oUsedRange = oSheet.UsedRange
   
    Dim oRowCount As Long
    oRowCount = oSheet.Range("A65536").End(xlUp).Row + 1 - CInt(Row_Start.Text)
   
    Dim i As Integer
    For i = 1 To oRowCount
        Dim strx As String, stry As String, strz As String
        strx = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, CInt(ColumnX.Text))
        stry = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, CInt(ColumnY.Text))
        strz = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, CInt(ColumnZ.Text))
       
        Dim X As Double, Y As Double, Z As Double
        X = oPartDoc.UnitsOfMeasure.GetValueFromExpression(strx, kDatabaseLengthUnits)
        Y = oPartDoc.UnitsOfMeasure.GetValueFromExpression(stry, kDatabaseLengthUnits)
        Z = oPartDoc.UnitsOfMeasure.GetValueFromExpression(strz, kDatabaseLengthUnits)
       
        Dim oPoint As Point
        Set oPoint = ThisApplication.TransientGeometry.CreatePoint(X, Y, Z)
       
        Dim oWorkPoints As ObjectCollection
        Set oWorkPoints = oPartDoc.AttributeManager.FindObjects("ImportedFromExcel", "Index", i)
       
        Dim oWorkPoint As WorkPoint
        If oClientFeature Is Nothing Then
            Set oWorkPoint = oWorkPoints.Item(1)
        Else
            For Each oWorkPoint In oWorkPoints
                If oWorkPoint.OwnedBy Is oClientFeature Then
                    Exit For
                End If
            Next
        End If
       
        Dim oFixedWorkPtDef As FixedWorkPointDef
        Set oFixedWorkPtDef = oWorkPoint.Definition
       
        oFixedWorkPtDef.Point = oPoint
    Next
   
    oPartDoc.Update
   
    ThisApplication.UserInterfaceManager.UserInteractionDisabled = False
    ThisApplication.ActiveView.Fit
    Unload Me
End Sub

Vielleicht gibt es aber auch sonst noch jemand, der mir bei dieser Aufgabe weiterhelfen kann. Ich sage schon mal ganz herzlichen Dank für die Unterstützung.

Gruß Stephan


p.s: die gesamten Programmteile hab ich im nachfolgenden Post beigefügt.

[Diese Nachricht wurde von FroSte am 13. Dez. 2022 editiert.]

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

FroSte
Mitglied
Bauingenieur


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

Beiträge: 20
Registriert: 09.06.2009

Inventor 2021

erstellt am: 13. Dez. 2022 08:21    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 SifiCAD 10 Unities + Antwort hilfreich


z_Default.zip

 
Guten Morgen,
hier sind noch die gesamten Programmteile mit den Forms enthalten.
Außerdem sind auch noch ein paar weitere Programme in der Datei beinhaltet, um z.B. Koordinatenpunkte auszulesen.

Gruß Stephan

[Diese Nachricht wurde von FroSte am 13. Dez. 2022 editiert.]

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

FroSte
Mitglied
Bauingenieur


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

Beiträge: 20
Registriert: 09.06.2009

Inventor 2021

erstellt am: 20. Jan. 2023 17:11    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 SifiCAD 10 Unities + Antwort hilfreich

Hallo Liebes Forum,

zuerst mal noch ein gutes und glückliches Jahr 2023 an alle.

Gibt es jemand, der mir bei meiner Frage / meiner Aufgabe weiterhelfen kann?
Das wäre ganz prima.

Vielen Dank schon im Voraus.

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

rkauskh
Moderator
Dipl.-Ing. (FH) Versorgungstechnik




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

Beiträge: 2166
Registriert: 15.11.2006

Windows 10 x64, AIP 2022

erstellt am: 20. Jan. 2023 22:06    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 SifiCAD 10 Unities + Antwort hilfreich

Hallo

Setz doch mal einen Haltepunkt vor die If-then-else Anweisung und schau ob deine ergänzte Zeile überhaupt erreicht wird. Das umbenennen würde ich eher unter die ganze If-Anweisung setzen.

------------------
MfG
Ralf

RKW Solutions GmbH
www.RKW-Solutions.com

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

FroSte
Mitglied
Bauingenieur


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

Beiträge: 20
Registriert: 09.06.2009

Inventor 2021

erstellt am: 17. Feb. 2023 12: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 Nur für SifiCAD 10 Unities + Antwort hilfreich

Hallo rkauskh,

vielen lieben Dank für den Hinweis.
Das Umbenennen unter die ganze If-Anweisung zu setzen war der richtige Tipp. So funktioniert das einwandfrei.

Gruß Stephan


Hier noch der korrigierte/angepasste Code:

Code:

Private Sub OKButton_Click()
   
    On Error Resume Next
   
    'ThisApplication.UserInterfaceManager.UserInteractionDisabled = True
   
    Dim oUsedRange As Range
    Set oUsedRange = oSheet.UsedRange
   
    Dim oRowCount As Long
    oRowCount = oSheet.Range("A65536").End(xlUp).Row + 1 - CInt(Row_Start.Text)
   
    Dim i As Integer
    For i = 1 To oRowCount
        Dim strx As String, stry As String, strz As String
        strx = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, CInt(ColumnX.Text))
        stry = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, CInt(ColumnY.Text))
        strz = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, CInt(ColumnZ.Text))
       
        Dim X As Double, Y As Double, Z As Double
        X = oPartDoc.UnitsOfMeasure.GetValueFromExpression(strx, kDatabaseLengthUnits)
        Y = oPartDoc.UnitsOfMeasure.GetValueFromExpression(stry, kDatabaseLengthUnits)
        Z = oPartDoc.UnitsOfMeasure.GetValueFromExpression(strz, kDatabaseLengthUnits)
       
        Dim oPoint As Point
        Set oPoint = ThisApplication.TransientGeometry.CreatePoint(X, Y, Z)
       
        Dim oWorkPoints As ObjectCollection
        Set oWorkPoints = oPartDoc.AttributeManager.FindObjects("ImportedFromExcel", "Index", i)
       
        Dim oWorkPoint As WorkPoint
        If oClientFeature Is Nothing Then
            Set oWorkPoint = oWorkPoints.Item(1)
        Else
            For Each oWorkPoint In oWorkPoints
                If oWorkPoint.OwnedBy Is oClientFeature Then
                    Exit For
                End If
            Next
        End If
       
        oWorkPoint.Name = oUsedRange.Cells(CInt(Row_Start.Text) - 1 + i, 1)
       
        Dim oFixedWorkPtDef As FixedWorkPointDef
        Set oFixedWorkPtDef = oWorkPoint.Definition
       
        oFixedWorkPtDef.Point = oPoint
    Next
   
    oPartDoc.Update
   
    ThisApplication.UserInterfaceManager.UserInteractionDisabled = False
    ThisApplication.ActiveView.Fit
    Unload Me
End Sub


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