Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Sweep, Bahn per VB/ VBA editieren

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
Autor Thema:   Sweep, Bahn per VB/ VBA editieren (410 mal gelesen)
PaBü
Mitglied
Maschinenbauingenieur


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

Beiträge: 46
Registriert: 10.06.2005

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

Guten Tag ins Forum,

kann mir bitte jemand auf die Sprünge helfen.

Ich möchte die Bahnkurve (Kurve durch XYZ-Punkte) eines Sweeps per VB/ VBA editieren.
Die Bahnkurve ist die Wendel eines sogenannten Stufentopfes und soll neben anderen Werten per VB änderbar sein.

Die Bahn habe ich berechnet, die anderen Werte (Höhe, Ø, Bohrungen etc.) an das CAD-Modell übergeben. Es "schüttelt" sich und hat alle Werte bis auf die der Kurve übernommen.

Die "Kurve durch XYZ-Punkte" wird leider neu angelegt und nicht als SubFeature des Sweeps (Wendel) editiert.

Mein Code sieht an der Übergabestelle (-> SWX) wie unten gezeigt aus.

Ist dieses SubFeature (Curve) denn editierbar? Hat jemand einen Tip?!

Codeausschnitt:

If FeatType = "Sweep" Then

                Dim name As String

                name = swFeat.Name

                If name = "Wendel" Then

                    lngEnd = UBound(Wendel, 2)

                    swPart.InsertCurveFileBegin()

                    For i = 0 To lngEnd

                        x = Decimal.Round(Wendel(0, i) / 1000, 8)
                        y = Decimal.Round(Wendel(1, i) / 1000, 8)
                        z = Decimal.Round(Wendel(2, i) / 1000, 8)

                        swPart.InsertCurveFilePoint(x, y, z)

                    Next

                    swPart.InsertCurveFileEnd()

                End If

------------------
mfg

Patrick

EINFACH sein, einfach SEIN!

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

bk.sc
Ehrenmitglied
Maschinenbautechniker


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

Beiträge: 1667
Registriert: 18.07.2012

HP Z400 Workstaion
CPU: Intel Xeon 6x 3,33GHz
GPU: NVIDEA Quadro 2000
RAM: 12 GB DDR3
Win 7 x64
CAD Hauptberuflich
-Solid Works 2014 SP4
-Creo Elements Direct Drafting (ME10)
DMS/PDM
-Pro.File V8 (8.4)
Simulation
-Simufact Forming 11.0
CAD Nebenberuflich
-Pro Engineer WF 3+4
-Creo Parametric 2.0

erstellt am: 15. Mrz. 2017 12:34    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 PaBü 10 Unities + Antwort hilfreich

Hallo Patrick,

die Befehle InsertCurveFileBegin()... InsertCurveEnd() sagt ja auch das du eine neue Kurve erstellt haben möchtest.

Du musst wohl eher über IModifyDefinition2 Method (IFeature) und ISetPointArray Method (IFreePointCurveFeatureData) gehen um die vorhanden Kurve zu editieren.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 15. Mrz. 2017 editiert.]

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

PaBü
Mitglied
Maschinenbauingenieur


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

Beiträge: 46
Registriert: 10.06.2005

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

Hallo Bernd,

vielen Dank für Deinen hilfreichen Tip. Nu läuft's 

Code:
If name = "Wendel" Then

lngEnd = UBound(Wendel, 2)

swModelDocExt = swPart.Extension
swSelectionMgr = swPart.SelectionManager
status = swModelDocExt.SelectByID2("Kurve Wendel", "REFERENCECURVES", 0, 0, 0, False, 0, Nothing, 0)
swFeature = swSelectionMgr.GetSelectedObject6(1, -1)
swFreePointCurveFeatureData = swFeature.GetDefinition

Dim Wendel_schreiben(3 * lngEnd + 2) As Double

For i = 0 To lngEnd

x = Wendel(0, i) / 1000
y = Wendel(1, i) / 1000
z = Wendel(2, i) / 1000

Wendel_schreiben(3 * i + 0) = x
Wendel_schreiben(3 * i + 1) = y
Wendel_schreiben(3 * i + 2) = z
                   
Next

swFreePointCurveFeatureData.PointArray = Wendel_schreiben
swFeature.ModifyDefinition(swFreePointCurveFeatureData, swPart, Nothing)

                   
End If


------------------
mfg

Patrick

EINFACH sein, einfach SEIN!

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)2017 CAD.de