Handle


Hallo liebe Community,

Ich habe ein Problem, bei der HANDLE Programmierung.
Ein Verbindungswinkel wird an der Bohrung an das erste Element abgesetzt.
Über den Griff "Winkel" soll der benötigte Winkel eingestellt werden.
Über den Griff "L1" die Länge (neutrale Faser) für den beide Schenkel, wenn die Option "Schenkel gleich" positiv gesetzt ist.
Der selbe Griff "L1" soll auch "L2" steuern wenn Schenkel gleich = 0. Dies bewirkt dass beide Schenkel an den richtigen Anschlusspunkt gezogen werden können.
siehe hierzu Skizzen.
Wie muss ich diese Handles programmieren (vor allem den Winkel --> dieser hat bereits einen RANGE hinterlegt).

Vielen Dank im Voraus
Johannes

Attachments (3)

Type: image/jpeg
Downloaded 56 times
Size: 25,81 KiB
Type: image/jpeg
Downloaded 51 times
Size: 36,61 KiB
Type: image/jpeg
Downloaded 57 times
Size: 64,31 KiB

3D-Script:

IF len_equ = 1 THEN len2 = len1

TRANSZ -hgt/2

TRANS -ofs , 0 ,0
HANDLE 0 , 0 ,0, id , "len1" , 1 !base
HANDLE len1 , 0 ,0, id , "len1" , 2 !move
HANDLE -1 , 0 ,0, id , "len1" , 3 !ref
id = id + 1 
RESTORE 1 

HANDLE -ofs + len1 + 1 , 0 , 0, id , "ang" , 4 !base
HANDLE -ofs + len1 + COS ( ang ) * ( len2 - ofs ) , 0 + SIN ( ang ) * ( len2 - ofs ) ,0, id , "ang" , 5 !move
HANDLE -ofs + len1 , 0 ,0, id , "ang" , 6 + 2048 !ref
HANDLE -ofs + len1 , 0 ,1, id , "ang" , 7
id = id + 1

IF len_equ = 0 THEN 
   TRANS -ofs + len1 , 0 , 0
   ROTZ ang 
   HANDLE 0 , 0 , 0,id , "len2" , 1 !base
   HANDLE len2 , 0 ,0, id , "len2" , 2 !move
   HANDLE -1 , 0 ,0, id , "len2" , 3 !ref
   id = id + 1 
   RESTORE 2 
ENDIF

GOSUB "put_outline" 

PRISM NUM_SP / 2 , hgt , 
GET ( NUM_SP ) 

RESTORE 1

Attachments (1)

Type: text/xml
Downloaded 543 times
Size: 11,09 KiB

Hi

Ich habe versucht die Definitionen an meinen Aufbau anzupassen. Funktioniert leider nicht.
Die Griffpunkte für L1 bzw. L1+L2 sind nicht da wo sie sein sollten und der Winkel will auch nicht ganz.
Habe das Teil hinterlegt. Vielleicht ist es nur ein Denkfehler.
Der Montagewinkel ist nach der biegeneutralen Faser entworfen.

!Handle Höhe
HANDLE 0 , 0 , 0 , 1 , h , 1
HANDLE 0 , 0 , h , 1 , h , 2
HANDLE 0 , 0 , -1 , 1 , h , 3

!Handle Länge1
TRANS ( l1 + ( l2 * COS ( w ) ) + ( ( s / 2 ) * SIN ( w ) ) - ( a2 * COS ( w ) ) ) , ( ( s / 2 ) + ( l2 * SIN ( w ) ) - ( ( s / 2 ) * COS ( w ) ) - ( a2 * SIN ( w ) ) ) , 0
HANDLE 0 , 0 , 0 , 2 , l1 , 1
HANDLE l1 , 0 , 0 , 2 , l1 , 2
HANDLE -1 , 0 , 0 , 2 , l1 , 3
RESTORE 1

!Handle Länge2
IF sync_l = 0.000 THEN
TRANSX l1 + TAN ( w / 2 ) * rada
ROTZ w
TRANSX l2 + TAN ( w / 2 ) * rada - a2
HANDLE 0 , 0 , 0 , 2 , l2 , 1
HANDLE l2 , 0 , 0 , 2 , l2 , 2
HANDLE -1 , 0 , 0 , 2 , l2 , 3
restore 3
ENDIF

!Handle Winkel
HANDLE l1 + 1 , 0 , 0 , 3 , "w" , 4 !base
HANDLE ( l1 + ( l2 * COS ( w ) ) + ( ( s / 2 ) * SIN ( w ) ) - ( a2 * COS ( w ) ) ) , ( ( s / 2 ) + ( l2 * SIN ( w ) ) - ( ( s / 2 ) * COS ( w ) ) - ( a2 * SIN ( w ) ) ) , 0 , 2 , "w" , 5 !move
HANDLE ( l1 - ( TAN ( w / 2 ) * r ) ) , ( ( s / 2 ) + r ) , 0 , 2 , "w" , 6 + 2048 !center
HANDLE l1 , 0 , 0 , 2 , "w" , 7 !ref

LG
Johannes

Attachments (1)

Type: text/xml
Downloaded 512 times
Size: 128,49 KiB

Der Montagewinkel ist nach der biegeneutralen Faser entworfen.

Man kann sich einfache Sachen aber auch kompliziert machen!
Die biegeneutrale Faser liegt in diesem Fall wo? Aussen oder in der Mitte des Flachstahls?

Einige Hinweise:
1. Handles haben eine "Nummer" , hier mit Variable id bezeichnet:
HANDLE 0 , 0 ,0, id , "len1" , 1 !base
HANDLE len1 , 0 ,0, id , "len1" , 2 !move
HANDLE -1 , 0 ,0, id , "len1" , 3 !ref
id = id + 1
Anhand dieser Nummer werden die 3 bzw. 4 notwendigen Punkte zusammengefügt.
Daher ist es unbedingt notwendig, diese Variable nach "Abschluss" eines Handles zu incrementieren.

2. Der Parameter-Name des Handles sollte man immer in Anführungszeichen setzen:
HANDLE 0 , 0 ,0, id , "l1" , 1

3. ELSE IF gibt es in der SmartPart-Sprache nicht!
Es sind immer vollständige Blöcke zu bilden
IF ... THEN
...
ELSE
IF ...THEN
...
ELSE
...
ENDIF
ENDIF

4. Es gibt einen Befehl HANDLEFACTOR xx , mit dem werden die vom Handle gemessenen Werte multipliziert.
Wenn man also wie bei Dir die Höhe bei 3/4 der Höhe messen will, braucht man einen HANDLEFACTOR 4/3
und gibt beim Hanlde dann folgendes ein:

HANDLE 0 , 0 , 0 , id , "h" , 1 
HANDLE 0 , 0 , h * 3/4 , id , "h" , 2 
HANDLE 0 , 0 , -1 , id , "h" , 3 
id = id + 1

Danach muss man mit HANDLEFACTOR 1.0 den Factor für die nächsten Handles wieder zurücksetzen.

5. Dein Winkel-Handle sollte evtl. so aussehen:

!Handle Winkel
HANDLE -a1 + l1 + 1 , 0 , 0 , id , "w" , 4 !base
HANDLE -a1 + l1 + ( l2 - a1 ) * COS ( w ) , 0 + SIN ( w ) * ( l2 - a1 ) , 0 , id , "w" , 5 !move
HANDLE -a1 + l1 , 0 , 0 , id , "w" , 6 + 2048 !center
HANDLE -a1 + l1 , 0 , 1 , id , "w" , 7 !ref
id = id + 1

Allerdings ist er dann "nur" auf der gedachten Achsen (bei Dir Aussenseite) des Stahls an der richtigen Stelle.
(Mit der Lage der Bohrung stimmt er nicht ganz überein.)
Das hast Du Dir mit der Rechnerei für die "biegeneutralen Faser" selbst die Karten gelegt.

Das Problem musst Du jetzt selbst lösen...

Attachments (2)

Type: text/xml
Downloaded 530 times
Size: 128,43 KiB
Type: image/png
Downloaded 48 times
Size: 49,17 KiB