Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Solid Edge
  Programmierung Außengewinde

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 SolidEdge
Autor Thema:  Programmierung Außengewinde (789 mal gelesen)
Frank_K
Mitglied
Student


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

Beiträge: 10
Registriert: 28.10.2003

erstellt am: 17. Jan. 2005 14:25    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,

ich habe Probleme beim Erzeugen eines Außengewindes. Von SE erhalte ich immer die Meldung "falscher Parameter" zurück. Ich möchte ein M10 Gewinde erzeugen. Meine Vorgehensweise sieht folgendermaße aus:

- HoleDate-Objekt angelegt mit igRegularHole und 10 mm Durchmesser
- die weiteren Parameter habe ich nach der Objekterzeugung zugewiesen:
  ThreadSetting als igRegularThread
  ThreadExternalDiameter mit 8.16 mm
  ThreadNominalDiameter mit 10 mm
  ThreadDepthMethod als igFinite
  OutsideEffectiveThreadLength mit 90 mm (Gesamtlänge vom Zylinder ist 100 mm)
  ThreadDescription mit 10 mm

Die Daten für ExternalDiameter, NominalDiameter und Description sind aus der HOLES.TXT.

Die weiteren Parameter für die Threads.Add-Methode sind sehen so aus:
Anzahl der Zylinder=1
Zylinderarray:
- Faces-Collection des Zylinders abgefragt mit igQueryCylinder
- daraus dann das Zylinderobjekt über Face.Geometry erzeugt
ZylinderEndArray:
- Faces-Collection des Zylinders abgefragt mit igQueryPlane
- eines der beiden Face in das Array gesteckt

Das Gewinde per Hand zu erzeugen funktioniert, also scheinen die Gewindedaten richtig zu sein.
Hat jemand eine Idee, wo ich hier einen Fehler gemacht haben könnte?

Danke, Frank

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

Demokrat2000
Mitglied



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

Beiträge: 145
Registriert: 27.09.2004

Cum ergo, cogito sum
oder Ich denke, also bin ich bzw.
Zu wissen, was die Welt im Inneren zusammenhält.

erstellt am: 17. Jan. 2005 15: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 Frank_K 10 Unities + Antwort hilfreich

Hey Frank,

also ich kann Dir auf die Schnelle auch keine Antwort geben.

MfG

Demokrat2000

[Diese Nachricht wurde von Demokrat2000 am 24. Jun. 2005 editiert.]

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

Frank_K
Mitglied
Student


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

Beiträge: 10
Registriert: 28.10.2003

erstellt am: 17. Jan. 2005 15:28    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 Demokrat2000,

hier ist mein derzeitiger Code:


pFaces = pExtrudedProtrusion->GetFaces(SolidEdgeGeometry::igQueryCylinder);
pCylinderFace = pFaces->Item(_variant_t ((long) 1));
pCylinder = pCylinderFace->Geometry;
pFaces = pExtrudedProtrusion->GetFaces(SolidEdgeGeometry::igQueryPlane);
pFace = pFaces->Item(_variant_t ((long) 1));

pExtrudedProtrusion wird übergeben als Ergebnis der Zylindererstellung in einem anderen Programmteil.

psaCylinderArray = SafeArrayCreateVector(VT_DISPATCH, lngArrayLowerBound, (UINT) lngNumberOfCylinders);
SafeArrayPutElement(psaCylinderArray, &lngArrayIndex, pCylinder);
CylinderArray.vt = VT_ARRAY | VT_DISPATCH;
CylinderArray.parray = psaCylinderArray;

psaCylinderEndArray = SafeArrayCreateVector(VT_DISPATCH, lngArrayLowerBound, (UINT) lngNumberOfCylinders);
SafeArrayPutElement(psaCylinderEndArray, &lngArrayIndex, pCylinderEdge);
CylinderEndArray.vt = VT_ARRAY | VT_DISPATCH;
CylinderEndArray.parray = psaCylinderEndArray;

psaCylinderArray und psaCylinderEndArray sind SAFEARRAY*, lngNumberOfCylinders hat den Wert 1, lngArrayLowerBound ist 0, lngArrayIndex ist auch 0, CylinderEndArray und CylinderArray sind _variant_t.

double HoleDiameter = 0.01;
pHoleData = pPartDoc->HoleDataCollection->Add(SolidEdgePart::igRegularHole, HoleDiameter);
pHoleData->PutThreadSetting(SolidEdgePart::igRegularThread);
pHoleData->PutThreadExternalDiameter(0.00816);
pHoleData->PutThreadNominalDiameter(0.01);
pHoleData->PutThreadDepthMethod(SolidEdgePart::igFinite);
pHoleData->PutOutsideEffectiveThreadLength(0.09);
pHoleData->PutThreadDescription(_bstr_t ("M10"));

Die Werte sind jeweils von mm in m umgerechnet.

pModel = pExtrudedProtrusion->Parent;
pThreads = pModel->Threads;
pThread = pThreads->Add(pHoleData, lngNumberOfCylinders, CylinderArray, CylinderEndArray);

Zum Schluß folgt noch das Abräumen der Array. Aber bis soweit kommt mein Programm nicht.

Grüße, Frank

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

Frank_K
Mitglied
Student


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

Beiträge: 10
Registriert: 28.10.2003

erstellt am: 17. Jan. 2005 16:09    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

Zitat:

psaCylinderEndArray = SafeArrayCreateVector(VT_DISPATCH, lngArrayLowerBound, (UINT) lngNumberOfCylinders);
SafeArrayPutElement(psaCylinderEndArray, &lngArrayIndex, pCylinderEdge);
CylinderEndArray.vt = VT_ARRAY | VT_DISPATCH;
CylinderEndArray.parray = psaCylinderEndArray;


kleine Korrektur:

Die Anweisung heißt richtig

SafeArrayPutElement(psaCylinderEndArray, &lngArrayIndex, pFace);

Mit den Edges hatte ich experimentiert, weil beim Erzeugen des Gewindes von Hand SE für das Ende des Zylinders nur Edge-Objekt fängt und keine Face-Objekte.

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