[Frage] Schnittoperationen bei BODY's [Gelöst]

Schlagworte:
  • SmartPart
  • Body
  • Schneiden

Hallo!

Ich hab mich heute mal mit den Befehlen BASE, VERT, EDGE, PGON und BODY beschäftigt.
Das funktioniert so weit so gut. Wenn ich jedoch eine Schnittebene mit CUTPLANE definiere, erhalte ich als Ergebnis eine 3D-Fläche und keinen Körper - obwohl der Status bei BODY auf 1 gestellt wurde.
Was mache ich hier falsch?

Hier noch das Skript:
---------------------------------------

!!!variables
cnt = 32 !circle
radius_d = 0.5
radius_u = 0.25
hight = 2
cutangle = 35

!!!CUT
TRANSZ hight - TAN ( cutangle ) * radius_u
CUTPLANE cutangle
RESTORE 1

!!!base
BASE

!!!lower verts
FOR i = 1 TO cnt
VERT radius_d , 0 , 0 !#V1-32
ROTZ 360 / cnt
NEXT i
RESTORE cnt

!!!upper verts
TRANS radius_d - radius_u , 0 , hight
FOR i = 1 TO cnt
VERT radius_u , 0 , 0 !#V33-64
ROTZ 360 / cnt
NEXT i
RESTORE cnt + 1

!!!axis
VERT radius_d - radius_u , 0 , 0 !#V65
VERT radius_d - radius_u , 0 , hight !#V66
EDGE 65 , 66 , -1 , -1 , 0 !#E1

!!!edges
FOR i = 1 TO cnt
EDGE i , cnt + i , -1 , -1 , i !#E2-33
NEXT i

!!!pgons

!!coat
FOR i = 2 TO cnt
PGON 4 , 0 , 1 ,
i + 1 , i , -i , -( i + 1 ) !2 TO 32
NEXT i
PGON 4 , 0 , 1 ,
2 , cnt + 1 , -( cnt + 1 ) , -2 !33 TO 2

!!top
FOR i = 2 TO cnt !+ 1
PGON 4 , 0 , 1 ,
i + 1 , i , 1 !1 TO 2/32
NEXT i
PGON 4 , 0 , 1 ,
2 , 33 , 1 !1 TO 33

!!bottom
FOR i = 2 TO cnt !+ 1
PGON 4 , 0 , 1 ,
-( i + 1 ) , -i , -1 !1 TO 2/32
NEXT i
PGON 4 , 0 , 1 ,
-2 , -33 , -1 !1 TO 33

!!!place body
BODY 1

!!!CUT
CUTEND

Anhänge (1)

Typ: image/png
25-mal heruntergeladen
Größe: 86,43 KiB

Lösung anzeigen Lösung verbergen

Hallo

die Normalen der Flächen stimmen nicht.

Zu diesem Problen gibt es schon einen Beitrag: https://connect.allplan.com/ch_de/forum/themen/topic/topics/cad-smartparts/smartparts-primitive-elements-body-als-solid-mit-schnittflaechen-darstellen.html

Gruss

Hallo

die Normalen der Flächen stimmen nicht.

Zu diesem Problen gibt es schon einen Beitrag: https://connect.allplan.com/ch_de/forum/themen/topic/topics/cad-smartparts/smartparts-primitive-elements-body-als-solid-mit-schnittflaechen-darstellen.html

Gruss

Danke für die Antwort!

Wie sind den die Normalen der Flächen definiert? (nur zum Verständnis)

..bitte den verlinkten Beitrag weiterlesen. Da steht alles drin!

Die Normale zeigt dann in die Richtung des Betrachters, wenn die Reihenfolge der Flächen-Kanten in der Kantenliste im Uhrzeigersinn verläuft.

Ich habe die Flächen angepasst und auf die Normalen geachtet. Die Mantelflächen und die Fläche Oben habe ich im Uhrzeigersinn und die Fläche Unten gegen den Uhrzeigersinn eingegeben. Somit sollten alle Normalen richtig sein und in die Mitte des Körpers "zeigen".
Sobald jedoch der Befehl CUTPLANE durchgeführt wird "hängt" sich der SmartPart auf und es wird nichts angezeigt. Wenn der Befehl nicht ausgeführt wird, wird wie gewünscht ein 3D-Körper erzeugt (Makro auflösen --> Eigenschaften --> 3D-Körper). Was hab ich hier falsch gemacht?

---------------------------

!!!pgons

!!coat - clockwise
FOR i = 2 TO cnt
PGON 4 , 0 , 1 ,
i , i + 1 , -( i + 1 ) , -i !2 TO 32
NEXT i
PGON 4 , 0 , 1 ,
cnt + 1 , 2 , -2 , -( cnt + 1 ) !33 TO 2

!!top - clockwise
FOR i = 2 TO cnt !+ 1
PGON 4 , 0 , 1 ,
1 , i + 1 , i !1 TO 2/32
NEXT i
PGON 4 , 0 , 1 ,
1 , 2 , 33 !1 TO 33

!!bottom - counterclockwise
FOR i = 2 TO cnt !+ 1
PGON 4 , 0 , 1 ,
-1 , -i , -( i + 1 ) !1 TO 2/32
NEXT i
PGON 4 , 0 , 1 ,
-1 , -33 , -2 !1 TO 33

---------------------------

Danke und schönen Tag!

Anhänge (2)

Typ: image/png
8-mal heruntergeladen
Größe: 707,00 B
Typ: image/png
15-mal heruntergeladen
Größe: 47,18 KiB

Die Normalen müssen nach aussen zeigen!

Die Normale zeigt dann in die Richtung des Betrachters, wenn aus Sicht des Betrachers die Reihenfolge der Flächen-Kanten in der Kantenliste im Uhrzeigersinn verläuft.

D.h. wenn man dan Körper von allen Seiten anschaut, müssen die Kanten aller sichtbaren Flächen in Uhrzeigersinn verlaufen.

Es fehlt scheinbar die Funktion BODY zum Abschliessen und Überprüfen des Poyleders!

Warum erstellst Du den Körper nicht mit der Funktion RULED oder mit PYRAMID und CUTPLANE?

Dann kannst Du Dir das "manuelle Zusammenbauen des Polyhedrons" sparen.
Dabei kann soviel schief gehen! Z.b. Wenn eine Fläche weniger als 3 Kanten hat, stürzt Allplan ab!
Ebenso wenn der Polyeder bei anschliessenden Schnittoperationen nicht normalisiert, und fehlerbereinigt ist!
Hast Du ja selber gemerkt..

Alles klar jetzt funktioniert's!

Danke für die Erklärung (und Geduld).
Ich wollte mich nur mal mit den Befehlen beschäftigen um zu sehen was damit möglich ist.