Ik ben op zoek naar een manier om alle punten uit een 3D-schets te extraheren in de volgorde die tijdens de scanfunctie wordt gevolgd. Dit om berekeningen uit te voeren zoals: hoeveelheidsonderzoeken, drukval, bekabelde rdm...
Ik heb de volgende 4 functies geprobeerd:
swSketch.GetSketchSegments: Geeft de segmenten uit de volgorde swSketch.GetSketchPoints2: geeft de punten in de verkeerde volgorde --> ik voeg een voorbeeld toe. Ik heb swSkPt.GetID(0) en swSkPt.GetID(1) geprobeerd , maar het geeft de opdracht niet. swSketch.GetSketchPaths: niets in mijn geval swSketch.GetLines: geeft de punten op volgorde, maar verwerkt slechts ongeveer de helft van de schets --> echt slecht, ik was er bijna!!
Voor elk ging ik verder met een lus van het type:
Voor i = LBound(vSketchPt) Naar UBound(vSketchPt) Stel swSkPt = vSketchPt(i) in Debug.Print (swSkPt.X & "; " & swSkPt.Y & "; " & swSkPt.Z) Volgend
Ik zou het op prijs stellen als u mij advies zou kunnen geven over deze kwestie.
Wat betreft de volgorde van de stippen, instinct en wat ik interpreteer van het resultaat dat in uw beeld is verkregen, zou ik zeggen dat het alleen wordt bepaald door de volgorde van creatie. Dat een schetsfilet die wordt toegevoegd na het tekenen van lijnen 1-2 2-3 3-4 genummerd wordt 5-6 met het middelpunt van de boog van het filetpuntnummer (#2 in uw geval). Als gevolg hiervan zal uw code ze in deze volgorde lezen (en koppelen).
SW geeft niet om de volgorde van de punten, het enige waar hij om geeft is welk punt met welk punt is verbonden om zijn lijn te trekken (1-2 of 1-5 is voor hem hetzelfde).
Doe de test met je code op een W-vormige schets, bekijk het resultaat, pas dan een blad toe op de 3 tussenliggende punten, en start je code opnieuw en bekijk het resultaat.
Bedankt voor je feedback. Het zijn inderdaad de feestdagen die de orde verstoren.
Ik heb wat tests gedaan met GetLines2, het verwerkt slechts een deel van de schets ook.
Merk op dat SW ondanks de vakantie in staat is om een toenemende sortering uit te voeren op basis van de positie van de punten op het traject. Tijdens een baanbeperking is het bijvoorbeeld mogelijk om een percentage in te voeren en wordt het object op de aangegeven positie geplaatst (cf. PJ met een bal op 50% van de baan).
A priori is het met de 4 genoemde functies niet mogelijk om toegang te krijgen tot deze sortering volgens het traject. De vraag zou dan zijn:
Is deze toenemende sortering toegankelijk via VBA-functies?
Met IGetLines2 heb je een ArraySize-parameter die, naar ik aanneem, je het aantal rijen geeft en je dus in staat stelt om het aantal iteraties van je lus te beheren. Ik denk dat het je in staat moet stellen om je hele schets door te nemen en te verwerken.
Wat betekent deze functie met betrekking tot de GetID? Afhankelijk van de situatie kan het mogelijk zijn om de id van een punt te associëren met een positie op het perceel.
Bedankt voor je feedback. Ik ga de IGetLines2 functie testen.
Het is een onderwerp dat ik als een rode draad behandel als ik beschikbaarheid heb. Ik laat het onderwerp in de tussentijd open.
GetID(0) en GetID(1) geven elk een geheel getal terug, verschillend voor elk punt. Ik heb gesorteerd op basis van deze 2 waarden, maar het traject wordt niet weergegeven.
Ik heb opgemerkt dat er in VBA methoden en "I-methoden" zijn:
Hallo Uit mijn hoofd geloof ik dat de padfunctie in een schets entiteiten ordent, maar het is alleen toegankelijk voor 2D-schetsen. Volgens een soortgelijk principe zoekt de samengevoegde macro naar het ene uiteinde van een continue keten van entiteiten in een 2D- of 3D-schets en ordent deze in een oplopende volgorde. Het toont ook de opeenvolgende punten van de ketting, die aan uw verzoek lijkt te voldoen. De macro is alleen getest op de twee schetsen in het bijgevoegde voorbeeld (SW 2021)...