API-probleemselectie en beperkingen

Hallo 

voor een project moet ik een SolidWorks-macro maken om een bepaalde taak te automatiseren. Tot nu toe is het me gelukt om de onderdelen automatisch te maken en in een assemblage te monteren.

Toch zit ik nu met een probleem: ik moet de onderdelen met beperkingen aan elkaar koppelen. Dus ik probeer het automatisch te doen. Hier is de code:

 

Dim swApp als object

Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub hoofd()

Stel swApp = Toepassing.SldWorks in

Deel instellen = swApp.ActiveDoc

' Stuurman
Deel.ClearSelection2 Waar
boolstatus = Part.Extension.SelectByID2("Verwijderde mat.-Extru.1@disque1-1@Assemblage1", "BODYFEATURE", 0, 0, 0, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Baas.-Extru.6@Pièce1-1@Assemblage1", "BODYFEATURE", 0, 0, 0, True, 1, Niets, 0)
Dim swMate als Mate2
Stel swMate in = Part.AddMate5(1, 0, Onwaar, 3.90150366882658E-02, 0.001, 0.001, 0.001, 0.523598755983, 0.5235987755983, Onwaar, Onwaar, 0, longstatus)
Deel.ClearSelection2 Waar
Deel.BewerkenOpnieuw opbouwen3

Einde Sub

 

(op twee stukken.)

Het probleem is als volgt:

Wanneer ik de beperking handmatig probeer uit te voeren (dus door de bijbehorende regel in de bovenstaande code te verwijderen), heb ik twee keuzes, afhankelijk van de markeringen die het in mijn code plaatst (de argumenten van de SelectID2-methoden)

  • -Als ik marker 0 gebruik, worden de onderdelen niet daadwerkelijk geselecteerd in het beperkingenmenu (screenshot 1)
  • - Als ik markering 1 gebruik, heb ik maar één beperkingskeuze!

Dus ik denk dat er een parameter van mijn methoden moet zijn die niet de juiste is, maar ondanks lang zoeken heb ik hem niet gevonden. Daarom kom ik u de vraag stellen: hoe kan deze beperking automatisch worden bereikt?

 

Alvast bedankt voor de hulp die je me kunt geven.

 

 

 


captures_ecran.rar

Hallo

Het is normaal dat je maar één type beperking beschikbaar hebt op afbeelding 2 met de selecties die je maakt, omdat dit lichamen zijn die je selecteert ("bodyfeature"), dus je kunt ze alleen tussen hen "blokkeren". U moet dus het type selectie per gezicht of andere wijzigen volgens uw behoeften, kijk per ICI.

Vriendelijke groeten

2 likes

Hallo 

Ik kom bij je terug omdat ik al zonder succes had geprobeerd deze instellingen te wijzigen. Uit geweten heb ik de tests opnieuw gedaan (met veel soorten aanwezig in de link die je me stuurde), maar het probleem blijft bestaan. Dat gezegd hebbende, kan ik het mis hebben over de aard van de objecten.

Ik bevestig mijn montage zodat je me gemakkelijker kunt helpen. Ik wil alleen de spillink maken.

 

Alvast bedankt voor je hulp!


dossier_test_pieces.rar

Hallo

Als u een concentriciteitsbeperking tussen gezichten wilt plaatsen, moet u uw gezichten een naam geven en ze vervolgens selecteren met de functie "GetEntityByName" zoals aangegeven in de opmerkingen op de volgende pagina ("Om IFace2-, IEdge - of IVertex-objecten op naam te krijgen, gebruikt u IPartDoc:: GetEntityByName of IPartDoc::IGetEntityByName.").

Het plaatsen van een draaibeperking tussen vlakken door PLC's is niet per se zo eenvoudig,  het is misschien beter om referentieassen in uw onderdelen te plaatsen en ze al te bouwen door na te denken over de beperkingen die u wilt stellen om uw draaifunctie te creëren door een samenloop van de 2 assen en een andere tussen 2 vlakken bijvoorbeeld, deze elementen kunnen direct worden geselecteerd in de functie "SelectById2" als "AXIS" en "PLANE".

Aan de andere kant is het waar dat in wat ik denk dat een studieproject is (student SW-graad) het interessanter en schoner is om door de selectie van gezichten te gaan!!

Vriendelijke groeten

3 likes

Het werkt wel.

Bedankt voor je hulp!