Autor
|
Thema: Wie erstellt diese spezielle WENN DANN FORMEL? (3207 mal gelesen)
|
Thomas 3D Mitglied 3D Designer
Beiträge: 393 Registriert: 17.09.2008 AutoCad 2012 Athena 2012 SWX 2011 TactonWorks Studio 4.3.2 TactonWorks Engineer 4.3.2.2
|
erstellt am: 03. Feb. 2012 18:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Tacton Fans, es ist sehr schwierig im Internet Tutorials zu finden, die mal beispielhaft Funktionen und ihre Handhabung erklären. Kennt jemand vielleicht ein paar brauchbare Websites? Ich habe mal mein Problem in eine Exceltabelle gepresst. Da funktionert es. Wie muß diese Formel im TCS aussehen? Würd mich über ein paar Lösungen freuen. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
timorp Mitglied Technischer Angestellter
Beiträge: 84 Registriert: 27.09.2011
|
erstellt am: 09. Feb. 2012 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hi Thomas, wichtig wäre es zu wissen, welchen Wert dein C bzw. D hat. Wenn es sich um eine boolean Domain handelt, ist es nicht so schwer. Dann wäre C=0 und D=1. Da Tacton ja immer den kleinst möglichen Wert errechnet, müsstest du nur eine Constraint erstellen, für den Fall, dass D=1 ist. Das geht mit zwei Bedingungen relativ einfach, da du sie einfach mit "and" und "or" beschreiben kannst. "A=... and B=... -> Ausgabewert=1". Wenn es keine boolesche Funktion ist, ist es nicht so trivial. Dann würde ich vermutlich für alle drei Möglichkeiten eine Constraint erstellen, die jeden der drei Fälle Beschreibt. Da du aber nur "C" und "D" hast, würde ich hier immer mit einer boolean arbeiten. Ich hoffe, das hilft dir schon mal ein bisschen. Wenn nicht, einfach weiter fragen! Gruß Timo PS: Mathematische Berechnungen gehen immer schneller als logische. Wenn du etwas anders ausdrücken kannst, als mit einer "and-or"-Verknüpfung, solltest du das im sinne der Performance tun. Marco hat mich mit seiner "Einschalt"-Constraint drauf gebracht. laenge.gesamt~=laenge qty.teil_1=yes->laenge_gesamt=laenge+teil_1.laenge wird ersetzt durch: laenge_gesamt=laenge+qty.teil_1*teil_1.laenge Das Ergebnis ist das gleiche und die Berechnung geht wesentlich schneller, da keine Wenn-Dann-Funktion mehr. Außerdem hat diese Art den Vorteil, dass sie sich beliebig erweitern lässt und so ganz neue Möglichkeiten bietet (Es können quasi mehrere "Wenns" hintereinandergeschaltet werden. Ich habe teilweise mehrere qty-Attribute in einer Constraint, die nur das addieren bzw. subtrahieren von Werten steuern. Sowas lässt sich unter Umständen auch für dein Wenn-Dann-Problem einsetzen. ------------------ "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." - George Bernhard Shaw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
timorp Mitglied Technischer Angestellter
Beiträge: 84 Registriert: 27.09.2011 AutoCAD Mechanical 2020 CSWA CSWP Core/DT/SM/WD/SU Intel Core i9-7900X@3,30GHz Windows 10 Pro 64,0GB RAM NVIDIA Quadro P2000
|
erstellt am: 09. Feb. 2012 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Nachdem ich mir deine Tabelle nochmal genau angesehen habe, habe ich festgestellt, dass dein Ergebnis nur vom Wert A abhängt. Ist A=0,0001, dann ist das Ergebnis D, ist A>0,0001 ist das Ergebnis C. Du brauchst in deinem Beispiel die Bedingung B nicht, es sei denn, du hast uns mögliche Ergebnisse vorenthalten Gibt es eventuell noch ein "E" oder eine Bedingung für den Fall, dass B>1500, außer die in der B\=-Zeile? Im Prinzip kannst du so deine ersten beiden Bedingungen nämlich zusammenfassen, da für B entweder alles außer 1500 oder 1500 eingesetzt werden kann. Somit ist deine Bedingung für B hier immer erfüllt und A ist in beiden Fällen gleich. ------------------ "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." - George Bernhard Shaw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco83 Mitglied CNC Programierung & Konstruktion
Beiträge: 139 Registriert: 22.11.2011
|
erstellt am: 14. Feb. 2012 14:37 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hallo Thomas 3D Jetzt habe ich auch mal Zeit dir bei deinem Problem zu helfen. Grundsätzlich gebe ich timorp recht. "And" & "or" usw sollte man in Formeln vermeiden da Tacton bei beispielsweise "And" gerne mal mehrere tausend berechnungen macht. und bei mehreren solcher formeln sammelt sich das natürlich. Mit der "Einschalt"-Constraint kann man in Tacton schon viel machen. Hier auch noch mal ein kleines einfaches Beispiel dazu: z.B. X = A + B + C_an * ( D + E ) C_an ist ein boolean wert. Yes=1 und No=0 bei Yes X = 10 + 10 + 1 * ( 10 + 10 ) X=40 bei No X = 10 + 10 + 0 * ( 10 + 10 ) x=20 (denn 0*x ist immer null) kannst auch mit einer Formel zwei Möglichkeiten abdecken. Entweder A oder D oder auch mehr. Es ist unendlich erweiterbar. X = A_an * ( B + C ) + D_an * ( E + F ) usw. usw. usw Ob der Wert dann Yes oder No ist steuere ich über die Tabellen. Damit schaltest du sozusagen Teile einer Formel aus oder ein. Aber am schnellsten geht es bei Tacton immer noch wenn Tacton gar nicht rechnen muss. Das heist, so viel wie möglich mit Varianten Tabellen arbeiten. Mit Tabellen rechnet Tacton nicht sondern sucht sich nur die gerade passende Tabelle raus und macht was drinne steht.
Anbei habe ich mal einen Lösungsvorschlag für dein Problem beigefügt. Dort habe ich mit Varianten Tabellen gearbeitet und Tacton muss gar nix rechnen. Zudem ist die Tabelle beliebig erweiterbar und das Grundprinzip läst sich für vieles anwenden. ICh verwende dieses Prinzip auch öfters bei mir. Hoffe ich konnte dir weiter helfen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas 3D Mitglied 3D Designer
Beiträge: 393 Registriert: 17.09.2008 AutoCad 2012 Athena 2012 SWX 2011 TactonWorks Studio 4.3.2 TactonWorks Engineer 4.3.2.2
|
erstellt am: 15. Feb. 2012 08:55 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Marco & Timorp, vielen Dank, das ihr euch meiner Sache angenommen habt. Mit Timorp's Überlegungen habe ich es dann hinbekommen. Toll finde ich auch den völlig anderen Gedankenansatz von Marco. Auf diesen Lösungsansatz wäre ich nie gekommen. Nochmals vielen Dank!!! Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Marco83 Mitglied CNC Programierung & Konstruktion
Beiträge: 139 Registriert: 22.11.2011
|
erstellt am: 15. Feb. 2012 10:09 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Den Ansatz den ich gepostet habe, hatte ich selber mal von meinem Tacton Ansprechpartner bekommen. Am anfang ist es zwar etwas kompliziert durch zu blicken aber nach einer Zeit benutzte ich es ganz gerne. Mit dem Prinzip kann man immer Werte anhand von flexiblem Bezugsbereichen steuern. z.B. A bis B = 1 B bis C = 2 Und das läst sich beliebig erweitern und weitere Bezüge hinzufügen sollte ein Ergebnis nicht nur von einem Bezug abhängig sein. Ich steuere so mitlerweile - meine Türbandanzahlen im bezug auf breite oder Höhe. - Zeichnungsmaßstab im Bezug auf breite oder höhe. - lochaufteilungen - usw usw Im Grunde sollte man bei Tacton auch immer so denken das es nich nur jetzt irgendwie funktionieren muss, sondern auch auf Dauer Übersichtlich und leicht änderbar sein sollte. Wenn man alles nur mit Formeln macht wird es später mal schwer etwas abzuändern. Vorallem wenn man lange nicht mehr an dem Programm gearbeitet hat. Daher versuche ich immer in Tabellen zu arbeiten. Dort sind die Werte übersichtlich aufgelistet und lassen sich mit einer einfachen Wertänderung bearbeiten. Auch wenn etwas ergenzt werden sollte, dann muss man nicht ganze Formeln suchen und abändern sondern einfach eine weitere Tabellenvariante hinzufügen. Auf dauer hat es mir schon so einiges erleichtert.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas 3D Mitglied 3D Designer
Beiträge: 393 Registriert: 17.09.2008 AutoCad 2012 Athena 2012 SWX 2011 TactonWorks Studio 4.3.2 TactonWorks Engineer 4.3.2.2
|
erstellt am: 15. Feb. 2012 11:11 <-- editieren / zitieren --> Unities abgeben:
Hi Marco, nur noch mal zur Info, zum besseren Verständnis. Ich habe nochmal mein Problem graphisch dargestellt und die Lösung drangeheftet. Mit Deinen und Timorps Info's kann man das Problem auch anders lösen. Danke nochmals!!! Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
timorp Mitglied Technischer Angestellter
Beiträge: 84 Registriert: 27.09.2011
|
erstellt am: 16. Feb. 2012 13:01 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
Hi Thomas, leider bin ich mir nicht sicher, ob ich dein Beispiel richtig verstehe. Zunächst mal die Frage, ob PF1 und PF2 zwei verschiedene Bauteile sind. Dann würde ich nämlich gar nicht mit den Achsen arbeiten, sondern mit der Länge der PF. Außerdem würde ich dann ein qty-Attribut erzeugen, dass den Unterdrückungsstatus von PF2 steuert und gleichzeitig als Einschalt-Attribut für deine Berechnung funktioniert. Wie in unseren Beispielen würdest du dann die Länge von PF2 mit der qty multiplizieren und hättest einen Wert für die Länge nur dann raus, wenn es auch ein PF2 gibt. Falls nicht, ergibt sich nur die Länge von PF1 - also: laenge_pf = laenge_pf1 + qty_pf2 * laenge_pf2 Ich bin kein Freund der 0,0001mm-Angabe, da sie konstruktiv nicht richtig ist. Wenn du es doch über die Achsen Steuern willst, solltest du die Achse mit einem qty-Attribut versehen, um sie nur im Bedarfsfall einzublenden. Ist sie unterdrückt, weil du kein pf2 hast, gibt es auch kein Fehler, wenn der Abstand zwischen axis1 und axis2 0 wäre. Mit dieser Steuerung würde ich beginnen. Darauf kannst du dann auch Punkt 4 aufbauen, den ich leider nicht so richtig verstehe, ich mache mir aber noch ein paar Gedanken darüber. Vielleicht komme ich drauf, ansonsten kannst du es ja nochmal etwas präziser erläutern. Schick doch mal deine Emailadresse per PN. Dann kann man schneller auf Problelme reagieren... :-) Gruß Timo ------------------ "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." - George Bernhard Shaw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
timorp Mitglied Technischer Angestellter
Beiträge: 84 Registriert: 27.09.2011 AutoCAD Mechanical 2020 CSWA CSWP Core/DT/SM/WD/SU Intel Core i9-7900X@3,30GHz Windows 10 Pro 64,0GB RAM NVIDIA Quadro P2000
|
erstellt am: 16. Feb. 2012 13:28 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
...und auch hier noch ein Nachtrag: Wenn du die linearen Muster von der Mitte aus steuern willst, funktioniert das so nicht sauber. Wenn dein Bohrungs- oder Schnittfeature nicht den Körper schneidet, wird zwar das lineare Muster erzeugt, allerdings bekommst du eine Fehlermeldung für das Schnittfeature. Da du beide seiten des linearen Musters bemaßt hast, weiß ich nicht, von wo es startet. Wenn es jeweils von aussen startet, mit dem abstand von 150mm wäre es ja kein Problem, da du ein lineares Muster ebenfalls berechnen kannst. Die Anzahl der Muster ist D1@linearesMuster, der Abstand D3@linearesMuster. Lässt sich genauso als Maß mappen, wie jedes andere auch. Soll das LM tatsächlich von der Mitte aus starten, würde ich zunächst die Anzahl der Löcher über die Länge berechnen: anzahl_muster=round((laenge_pf1/raster)+0,4) [+0,4 hat den Effekt, dass ab x,1 aufgerundet wird, weil du ein Loch mehr als Zwischenräume hast] und dann als Startpunkt den Abstand zwischen axis2 und dem ersten Loch als: abstand_loch1=laenge_pf2-(anzahl_muster-1)*raster-150 [150 ist hier dein Abstand von außen zum ersten (letzten) Loch] Ich hoffe, du verstehst, wie ich es meine. Ich erkläre es aber auch gerne nochmal ausführlicher, wenn es notwendig ist. Gruß Timo ------------------ "Der Nachteil der Intelligenz besteht darin, dass man ununterbrochen gezwungen ist, dazuzulernen." - George Bernhard Shaw Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| TGA Planer (m/w/d) HKLS | ISS gehört heute mit rund 360.000 Mitarbeitern zu den größten privaten Arbeitgebern der Welt und gestaltet durch Sensorik und IoT-Lösungen die digitale Zukunft rund um das Gebäude. Unser Ziel ist es, die beste Serviceorganisation der Welt zu werden. Sind Sie bereit mit uns den nächsten Schritt zu gehen? Durch die intelligente Vernetzung von Menschen und Systemen schaffen wir täglich gemeinsam den Arbeitsplatz der Zukunft.... | Anzeige ansehen | Gebäude-, Versorgungs-, Sicherheitstechnik |
|
Marco83 Mitglied CNC Programierung & Konstruktion
Beiträge: 139 Registriert: 22.11.2011
|
erstellt am: 22. Feb. 2012 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für Thomas 3D
So hier mal ein Vorschlag von mir. Eine Lösung die ohne Tabelle und so gut wie ohne Formeln auskommt. Alles ergibt sich alleine schon daraus wie man zeichnet. Ich hoffe es ist verständlich. Sollten Fragen sein einfach Fragen. ######## Nachtrag zur angefügten PDF ######## Das PDF Beispiel zeigt wie man auch mit 0 Werten rechnen kann da SWX nicht mit 0 arbeiten kann. Problem bei der PDF wäre nur das bei einem 0 Wert das Feature komplett weg geschnitten wird. Und das mag SWX nicht. diese Lösung wäre möglich wenn die Skizze für das Feature z.B. auf AXIS 3 liegt. Sprich das Feature nach rechts weiter geht. Zu deinem Beispiel: PF1 ist ja nur eine verlängerung zu PF2. mit meinem Beispiel kannst du PF1 auf 0 setzten. Dies geht aber nur wenn das Feature von AXIS 3 aus ausgetragen wird. [Diese Nachricht wurde von Marco83 am 22. Feb. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|