Seite 1 von 1

Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 13 Mär 2023, 19:55
von DieterStriebel
Hallo zusammen

ja ich bin noch ziemlich neu hier, zu meiner Person: viewtopic.php?f=4&t=7912

Zum Start 2 Bilder:
  • 1 Anfang.jpg
    1 Anfang.jpg (20.82 KiB) 1996 mal betrachtet
  • 2 Ende.jpg
    2 Ende.jpg (217.36 KiB) 1996 mal betrachtet
Zwischen diesen Bildern liegen 5 Sekunden und folgendes Python Script:
Code.jpg
Code.jpg (262.07 KiB) 1996 mal betrachtet
Dies ist meine erst Entwicklung in Python und mit dem fischertechnik Designer. der Code ist einfach und simple gehalten, eine Fehlerbehandlung ist bewusst nicht implementiert UND zumindest die sphärische Trigonometrie hat noch Bugs (Hilfe gerne willkommen).
  • für die, die wissen wie es geht: unten der Code zum kopieren
  • für alle anderen, folgt ein Beitrag zur Einrichtung von Python und fischertechnik Designer
LG Dieter

Code: Alles auswählen

#SerienGenerator
#Autor:  Dieter Striebel
#Stand:  13.03.2023
import ftd
import math
    
lngPartCount = ftd.GetPartCount()
#get the two last added parts.                  >>> based on this parts, the serie will be generated
prt1 = ftd.GetPartAtIndex(lngPartCount-2)            
prt2 = ftd.GetPartAtIndex(lngPartCount-1)            
#select ONLY the two last added partsftd.DeSelectAll()
ftd.SelectPart(prt1.Name)
ftd.CoSelectPart(prt2.Name)
#move selected parts zu new phase
lngPhase = prt1.Phase + 1
prt1.Phase = lngPhase
prt2.Phase = lngPhase
ftd.RepaintPhaseView()

#get Object3D
o3d1 = prt1.Object3D
o3d2 = prt2.Object3D
pos1 = o3d1.Position
pos2 = o3d2.Position
dir1 = o3d1.Direction
dir2 = o3d2.Direction   

lngDir1x = math.degrees(math.asin(dir1.x))
lngDir2x = math.degrees(math.asin(dir2.x))
lngDir1y = math.degrees(math.asin(dir1.y))
lngDir2y = math.degrees(math.asin(dir2.y))
lngDir1z = math.degrees(math.asin(dir1.z))
lngDir2z = math.degrees(math.asin(dir2.z))

#calculate difference
lngPosDx = pos2.x - pos1.x
lngPosDy = pos2.y - pos1.y
lngPosDz = pos2.z - pos1.z
lngDirDx = lngDir2x - lngDir1x
lngDirDy = lngDir2y - lngDir1y
lngDirDz = lngDir2z - lngDir1z

#store new starting point
lngPosSx = pos2.x
lngPosSy = pos2.y
lngPosSz = pos2.z
lngDirSx = dir2.x
lngDirSy = dir2.y
lngDirSz = dir2.z
                                                #orgNumber = prt2.OrgNumber
orgNumber = prt2.Name[1:6]
lngNumber = int(ftd.InputDlg("Serie erstellen", "Anzahl Bauteile", "0"))
for i in range(lngNumber):
    #create new part
    strN = ftd.AddPart(orgNumber)
    ftd.CoSelectPart(strN)
    prtN = ftd.GetPartAtIndex(lngPartCount + i)
    prtN.Phase = lngPhase
    ftd.RepaintPhaseView()
    o3dN = prtN.Object3D
    posN = o3dN.Position
    dirN = o3dN.Direction
    #   set new coordinates based on the starting-point and the different of the origianly two last added parts
    posN.x = lngPosSx + lngPosDx
    posN.y = lngPosSy + lngPosDy
    posN.z = lngPosSz + lngPosDz
    dirN.x = math.sin(math.radians(lngDirSx + lngDirDx))
    dirN.y = math.sin(math.radians(lngDirSy + lngDirDy))
    dirN.z = math.sin(math.radians(lngDirSz + lngDirDz))
    prtN.CommitChanges(0)     
    #   and store it as new starting point 
    lngPosSx = posN.x
    lngPosSy = posN.y
    lngPosSz = posN.z
    lngDirSx = dirN.x
    lngDirSy = dirN.y
    lngDirSz = dirN.z

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 14 Mär 2023, 18:11
von laserman
Hallo Dieter,
na da bin ich (und bestimmt auch viele andere) mal sehr gespannt.
1. arbeite ich auch sehr gerne mit dem Designer
2. wollte ich mal was mit Python machen, das hat aber nicht so geklappt: Script ausführen

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 14 Mär 2023, 21:11
von DieterStriebel
Hallo laserman

Danke für die Antwort, dann geht es jetzt für Dich hier weiter: «fischertechnik Designer» und Python: Konfiguration - Verwendung - Probleme und Lösungen...

LG Dieter

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 15 Mär 2023, 09:30
von PHabermehl
Hochinteressante Sache!

Leider hab ich den Designer unter Linux/Wine laufen, ob da noch 'was mit Python geht???

Gruß Peter

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 15 Mär 2023, 10:15
von DieterStriebel
Ausprobieren.
- ist Python unter Linux installiert, welche Version?
- und dann den «fischertechnik Designer» konfigurieren, wie hier «fischertechnik Designer» und Python: Konfiguration - Verwendung - Probleme und Lösungen... beschrieben.

bin gespannt auf das Ergebnis Deiner Versuche, aber bitte im oben erwähnten Thread posten (passt dort besser)

LG Dieter

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 16 Mär 2023, 19:12
von DieterStriebel
PHabermehl hat geschrieben:
15 Mär 2023, 09:30
Leider hab ich den Designer unter Linux/Wine laufen, ob da noch 'was mit Python geht???
Hallo Peter, spannend, ich habe zwar nur einen Raspberry Pi aber darauf sollte WINE auch laufen.
Wenn Du mir in etwa beschreibst, wie du WINE und den x86-Emulator (welchen? https://eltechs.com/ scheint es nicht mehr zu geben) installiert hast versuche ich es auch mal.

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 16 Mär 2023, 20:26
von PHabermehl
DieterStriebel hat geschrieben:
16 Mär 2023, 19:12
PHabermehl hat geschrieben:
15 Mär 2023, 09:30
Leider hab ich den Designer unter Linux/Wine laufen, ob da noch 'was mit Python geht???
Hallo Peter, spannend, ich habe zwar nur einen Raspberry Pi aber darauf sollte WINE auch laufen.
Wenn Du mir in etwa beschreibst, wie du WINE und den x86-Emulator (welchen? https://eltechs.com/ scheint es nicht mehr zu geben) installiert hast versuche ich es auch mal.
Ach du Schreck, ich habe einfach wine unter OpenSuse 15.4 gestartet, das war da gleich mal mitinstalliert. Ich habe da gar nicht genauer hingeschaut.

Gruß Peter

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 16 Mär 2023, 22:07
von juh
PHabermehl hat geschrieben:
15 Mär 2023, 09:30
Leider hab ich den Designer unter Linux/Wine laufen, ob da noch 'was mit Python geht???
Hallo Peter (und Dieter),

soweit ich Wine verstehe, müsstest du wahrscheinlich Python (für Windows) mit in das selbe Wineprefix installieren, in dem auch der Designer läuft. Denn ich denke vom unter Linux installierten Python wird der unter wine laufende Designer nichts wissen. Falls du kein extra Wineprefix angelegt hast, wahrscheinlich einfach nur eine Python Installations exe runterladen und per wine installieren, das geht dann ins default Wineprefix. Danach müsste dann Dieters Anleitung anwendbar sein (klasse Projekt übrigens).

vg
Jan

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 19 Mär 2023, 22:27
von kräml
Hallo,

ah hier ist das mit Linux und wine.

So wie es juh beschrieben hat, geht es bei mir leider nicht UND ich habe noch keine Lösung.

Über winetricks kann man Python2.6 installieren. Das klappt bedauerlicherweise auch nicht.

Habe dann den msi Installer für 2.5 durchlaufen lassen. Leider auch keinen Erfolg im Designer.

Was ich noch nicht gemacht habe, ist eine win-cli unter wine um python zu testen. Da müsste ich erstmal wissen, wie ich das mit wine machen sollte.

Hat evtl. noch jemand eine Idee?

Gruß Kräml

Re: Eine Kette mit 99 Gliedern in 5 Sekunden oder «fischertechnik Designer» und Python

Verfasst: 19 Mär 2023, 23:38
von DieterStriebel
bei mir läuft es und geht jetzt hier weiter
viewtopic.php?f=8&t=7920&p=61522#p61531