Eingabe von mehrere Parametern (fx) in einem dynamischen Block

Eingabe von mehrere Parametern (fx) in einem dynamischen Block

Rob_Molina
Contributor Contributor
1.409Aufrufe
11Antworten
Nachricht 1 von 12

Eingabe von mehrere Parametern (fx) in einem dynamischen Block

Rob_Molina
Contributor
Contributor

Hallo
Ich habe eine hervorragende Unterstützung erhalten, um mit einem dynamischen Block eine gebogene Kurve zu erzeugen.

Ich arbeite weiter an der DB, ich habe die folgende Abfrage:
Ist es möglich, weitere Funktionen (fx) einzugeben, ich brauche eine weitere Winkelmessung, um H = (B/2) *(Tan((Win2*2)/4) zu berechnen , B==(2*Rad1)*((sin (Win2/2))

Formeln aus diesem Link = Kreissegment – Wikipedia 

Hier sieht man Win2 und Win3, die nicht akzeptiert werden.

Block Name = 10130_Test_Winkel

TestWinkel.png

Hier habe ich es mit Parametern (fx) versucht, "S" funktioniert perfekt, aber die Eingabe des Parameters "L" ist verloren gegangen.  Block Name = 10130_Test_Winkel_2

parameter.png

Ich bin für jede Hilfe dankbar, die ihr mir geben könnt.
Mit freundlichen Grüßen

«Most people spend more time and energy going around problems than trying to solve them. » - Henry Ford
0 „Gefällt mir“-Angaben
Akzeptierte Lösungen (1)
1.410Aufrufe
11Antworten
Antworten (11)
Nachricht 2 von 12

j.palmeL29YX
Mentor
Mentor

Hmm, bißchen viel Chaos 😉

 

Die Namen der Parameter in Deinem Text und in Deiner Datei stimmen nicht überein (in der dwg gibt es kein Win2, kein Rad1). So ist es schwierig nachzuvollziehen, was Du machen/erreichen willst. 

Dann sind für B im Text und im Parametermanager unterschiedliche Formeln angegeben (2*Pi vs. 2*Rad1). 

Außerdem steht im Parametermanager anstelle Deines sin(Win2/2) ein sin(55.9...). Das passiert, wenn in der Formel dort mal ein Parametername stand, der dann aber gelöscht oder umbenannt wurde. [Wenn einem dieser Fehler unterläuft kommt aber in aller Regel auch ein Warnhinweis, daß ein Parametername durch einen konkreten Zahlenwert  - der nun natürlich nicht mehr variabel ist - ersetzt wurde. Also: Augen auf und alles lesen! 😉 ]. 

Und last not least ist mir die Funktion von A nicht ganz klar. Referenzparameter kann man zu nichts anderem verwenden als sie anzugucken (sofern man sie überhaupt sieht). Sie können nicht in anderen Ausdrücken oder für sonstige Zwecke weiterverwendet werden). 

Was Du mit B berechnen willst ist ohnehin nicht ganz klar (ich stell mich mal dumm) und ein H taucht in Deiner Datei gar nicht auf. Und L1?

Also ich würde erst mal skizzieren, was B und H und L und ... sein sollen. Dann muß eindeutig klar sein, welche der Werte der Anwender eingeben kann/soll und welche daraus dann berechnet werden sollen oder müssen. Dann wissen Außenstehende Bescheid und auch Du selbst verlierst nicht den Überblick. 

Bring erst mal Ordnung in das Namens-Wirrwar. (Also ich denke mal, Win2 soll Dein A sein, A ist aber ein Referenzparameter und damit für die Verwendung in einer Formel ohnehin nicht geeignet. Warum für Berechnung von H nicht gleich W verwenden? Und die Formel für B korrigieren [u.a. den gültigen Parameternamen W für den Winkel einsetzen]  dann sollte das schon klappen). 

 

In den nächsten Tagen werde ich hier nur sporadisch mal reinschauen (bin im Urlaub). Also nicht wundern, wenn mal für 'ne Weile nichts von mir zu hören (lesen) sein wird.  

 

 

viel Erfolg

 

 

[EDIT]: 

Mal kühn drauf los geraten: Wenn B die Sehnenlänge des Boges sein soll und H die (Stich)Höhe des Bogens,  (und R der frei wählbare Radius und W der aus gewünschter Bogenlänge L berechnete (halbe) Winkel), dann wären

B=2*R*sin(W) 

und 

H=R*(1-cos(W))

 

Hilft das weiter?

Jürgen Palme
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

0 „Gefällt mir“-Angaben
Nachricht 3 von 12

Rob_Molina
Contributor
Contributor

Vielen Dank, stimmt ich habe sehr unordentlich gearbeitet...jetzt versuche ich, besser zu arbeiten,  und habe alles neu gemacht, ohne irgendwelche Änderungen an den Namen vorzunehmen.

Meine Bemerkungen: Die eingegebenen Formeln funktionieren gut, aber sie nehmen die Information von Rad1=500, die mit diesem Wert festgelegt ist.

Deshalb stimmen die realen Daten von B nicht mit Breite und H nicht mit Höhe überein.

Ich denke, dass eine weitere Win2-Funktion benötigt wird, aber es ist nicht möglich, sie zu integrieren.

Wie kann man erreichen, dass die Formel eine Variable Rad2 annimmt und nicht Rad1 voraussetzt?

Oder interpretiere ich da etwas falsch?

Das ist alles ganz neu für mich und ziemlich komplex.

Rob_MTh_0-1688392501900.png

 

Freundliche Grüsse

«Most people spend more time and energy going around problems than trying to solve them. » - Henry Ford
0 „Gefällt mir“-Angaben
Nachricht 4 von 12

j.palmeL29YX
Mentor
Mentor

@Rob_Molina wrote:

 

Deshalb stimmen die realen Daten von B nicht mit Breite und H nicht mit Höhe überein.

 


 

Nunja, vermutlich hast Du tatsächlich noch einen Knoten im Kopf. 

Aber der Reihe nach: 

Zunächst habe ich in deinem Block mal die Formeln für die Berechnung der beiden User Parameter Breite und Höhe korrigiert. Änderung ist in der angehängten Datei im Parameter Manager zu sehen. 

Nun stimmen die Werte von Breite und Höhe ziemlich gut mit den Werten von B und H überein, aber eben nicht genau. Warum? Guck Dir mal dieses Video an, wie die beiden Linearparameter B und H definiert sind: 

 

(in "Meine Videos" anzeigen)

 

 

Und damit sind wir bei dem "Koten im Kopf" 😉 : Ganz abgesehen davon, daß es sehr unzweckmäßig ist, dynamische Paramter und Aktionen mit Constraints (Parametrik) zu vermischen (das funktioniert in den meisten Fällen ohnehin nicht), wozu würdest Du die beiden zusätzlichen Paramter B und H benötigen? Die Breite und die Höhe des Bogens sind doch durch Rad1 und L (mit dem Umweg über Win1) bereits eindeutig bestimmt. Diese nun zusätzlich mittels der LinearParameter B und H ändern zu wollen kann ja gar nicht funktionieren. 

Bleibt unter dem Strich die Frage: Wozu sind B und H gedacht? (Ich denke die können, nein, sie sollten gelöscht werden). 

 

 

Jürgen Palme
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

Nachricht 5 von 12

j.palmeL29YX
Mentor
Mentor

@Rob_Molina wrote:

 

Wie kann man erreichen, dass die Formel eine Variable Rad2 annimmt und nicht Rad1 voraussetzt?

Oder interpretiere ich da etwas falsch?

 


Möglicherweise ja. 

Wenn man die Sehnenlänge und/oder Höhe eines Kreisbogens berechnen will, muß dafür der Bogenradius bekannt sein. Das ist enfach so und ist in jedem einschlägigen Nachschlagewerk zu finden. Und der Bogenradius Deiner Geomterie ist ja bekannt und vom Nutzer vorgegeben, das ist der Rad1. Wozu denkst Du ein zweites Rad2 zu benötigen (wenn es denn ohnehin den gleichen Wert wie Rad1 hat)?. 

Möglicherweise ist Dein Gedankenwirrwar dadurch begründet, daß Du den Parameter für die Abhängigkeit Radius (Rad1)  versuchst irgendwie mit einer dynamischen Aktion ((Strecken, Skalieren o.ä.) zu verknüpfen. Das solltest Du ganz schnell vergessen, das geht nicht. Wie bereits gesagt sollte man dynamische Parameter (Punktparameter, Linearparameter, Polarparameter usw.)  und Aktionen (Verschieben, Strecken, Skalieren, ... Befehl Baktiontool) nicht gleichzeitig mit parametrischen Abhängikeiten (koinzident, kolinear, konzentrisch usw.) und Bemaßungsparametern (Befehl Baparameter) in einer Blockdefinition verwenden. 

Man muß sich entscheiden, für beabsichtige Geometrieänderungen in einem dynamischen Block entweder vollständig mit dynamischen Parametern und Aktionen auszukommen (dafür wüßte ich in Deinem Fall keine Lösung) oder eben alles ausschließlich über die Möglicheiten der Parametrik zu lösen. 

Jürgen Palme
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

Nachricht 6 von 12

Rob_Molina
Contributor
Contributor

Hallo 

Vielen Dank für die Unterstützung, sehr gut. Es ist mir inzwischen gelungen, die Fehler zu korrigieren  und die unnötigen Parameter zu entfernen. (dank deiner Beratung) Jetzt habe ich die perfekten Daten für Höhe und Breite.
Wofür brauche ich diese Daten: es handelt sich um Biegeschienen und diese Daten müssen gemessen werden.
Zusätzliche Abfrage; Ich habe gesucht, wie man diese beiden Daten zu exportieren, um sie zu printen oder sie sichtbar zu machen, ich habe mit "Attribute" versucht und es ist nicht möglich. Gibt es eine andere Möglichkeit, die "fx" zu exportieren?
Eine weitere Frage: Ist es möglich, Grenzen zu setzen, so dass diese Situation nicht eintritt und fast einen Kreis darstellt?  Zum Beispiel ein "L" von maximal 5200? 

Sonst muss ich vor dem Ausdrucken der Bögen die Maße angeben.

   Rob_MTh_0-1688480029964.png

 

«Most people spend more time and energy going around problems than trying to solve them. » - Henry Ford
0 „Gefällt mir“-Angaben
Nachricht 7 von 12

j.palmeL29YX
Mentor
Mentor

@Rob_Molina wrote:

Jetzt habe ich die perfekten Daten für Höhe und Breite.


 

Leider hatte ich in meinem letzten Post (#4) vergessen, die im Text versprochene Datei anzuhängen. Entschuldigung! Aber schön zu lesen, daß Du auch ohne diese zum gewünschten Ergebnis gekommen bist. 

Im folgenden Video zeige ich an einem exemplarischen Beispiel, wie man z.B mittels Datenextraktion die gewünschten Informationen für Sehnenlänge und Bogenhöhe auslesen kann - wahlweise in einer Tabelle in der Datei und/oder in eine externe Textdatei rausschreiben. Ich hoffe als Anstoß für weitere Verbesserungen sollte das genügen. (Keine Ahnung, inwieweit Du mit dem Thema Datenextraktion vertraut bist).

 

(in "Meine Videos" anzeigen)

 

 

 


@Rob_Molina wrote:

Ist es möglich, Grenzen zu setzen, so dass diese Situation nicht eintritt und fast einen Kreis darstellt?  Zum Beispiel ein "L" von maximal 5200? 

 


 

Die Frage ist gut und berechtigt, aber das Beispiel wieder nicht bis zum Ende überlegt. (Das ist kein Vorwurf, nur eine Feststellung). Was würde es z.B. helfen, den Wert für L auf 5200 zu begrenzen, wenn gleichzeitig für den Radius ein Wert von  200 gewählt wurde? Eine gewünschte Einschränkung für die Werte müßte also anders formuliert werden. 

Und die Frage "ist es möglich ... " würde ich mit einem Jein beantworten wollen. Man kann sicherstellen, daß der Anwender zwar beliebig große Werte eingibt, das Programm aber nur einen Wert bis zu einem gegebenen Grenzwert zurückgibt (mit der MAX oder MIN Funktion). Das würde den Block jedoch unnötigerweise verkomplizieren. Aber wenn es denn unbedingt notwendig sein soll - überlege Dir noch mal genau worin die "Grenzbedingungen" bestehen, dann sehen wir weiter.  

Jürgen Palme
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

0 „Gefällt mir“-Angaben
Nachricht 8 von 12

j.palmeL29YX
Mentor
Mentor

Die Ausgabe der Geometriewerte Sehnenlänge und Bogenhöhe per Datenextraktion wie oben gezeigt war nur eine Notlösung, da das von mir eigentlich Beabsichtigte an Deiner Datei nicht funktioniert(e). 

Habe mich nun doch entschlossen, den Block in einer neuen Datei nochmals komplett neu aufzubauen. 

Im folgenden Video ist zu sehen, wie man die beabsichtigten Werte als Attribut anzeigen lassen kann.

 

(in "Meine Videos" anzeigen)

 

 

Ich habe die Attribute nur freihändg und liederlich platziert - das kannst Du selbst natürlich besser machen. 

Nach Änderung der Eingabedaten Radius und/oder Bogenlänge muß die Datei regeneriert werden, damit die Änderungen an den Attributen wirksam werden. (Das ist so bei Schriftfeldern [_field]). 

Warum das an Deiner Datei nicht funktioniert habe ich noch nicht herausgefunden. Die Ursache zu erforschen mache ich mir jetzt aber auch keine Mühe. Die angehängte Datei zeigt, daß es prizipiell gehen sollte (und auch geht 😉 q.e.d. ). 

Und wenn du willst kannst Du natürlich auch noch je eine Linie für Höhe und Sehnenlänge einzeichnen (und mit je zwei Koinzidenzen geometrisch verankern), notwendig sind sie aber nicht.  

Jürgen Palme
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

Nachricht 9 von 12

Rob_Molina
Contributor
Contributor

Hallo,

Vielen Dank für die großartige Hilfe.
Ich werde nächste Woche daran arbeiten und hoffe, dass ich es fertigstellen kann.
In den nächsten Tagen werde ich dir Bescheid geben, wie es weitergeht.
Mit freundlichen Grüßen

«Most people spend more time and energy going around problems than trying to solve them. » - Henry Ford
0 „Gefällt mir“-Angaben
Nachricht 10 von 12

j.palmeL29YX
Mentor
Mentor
Akzeptierte Lösung

@Rob_Molina wrote:


Ich werde nächste Woche daran arbeiten und hoffe, dass ich es fertigstellen kann.


 

Und - wie schaut's aus? Problem(e) gelöst?

 

 

Jürgen Palme
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

0 „Gefällt mir“-Angaben
Nachricht 11 von 12

Rob_Molina
Contributor
Contributor

Guten Tag,

Ich befinde mich in einer neuen Situation, die ich bisher noch nicht kannte.
Ich möchte das Beispiel "Bogentest" kopieren und unter einem anderen Namen speichern. Das funktioniert, aber die Funktionen (fx) gehen verloren. Meine Idee ist, auf dieser Basis für andere Arten von Kurven zu arbeiten.

Vielen Dank.

 

Rob_MTh_1-1690446431363.png

 

Rob_MTh_2-1690446442915.png

 

 

 

 

 

«Most people spend more time and energy going around problems than trying to solve them. » - Henry Ford
0 „Gefällt mir“-Angaben
Nachricht 12 von 12

j.palmeL29YX
Mentor
Mentor

Was hast Du wie kopiert und was hast Du wie unter anderem Namen abgespeichert? 

 

Ich habe folgendes getestet: 

- Im Blockeditor der Originaldatei den Block "Bogentest" unter einem neuen Namen ("BT_2") abspeichern. 

 

SaveBlockAs.png(Sorry, habe gerade die englische Version am Wickel) 

 

- Blockeditor verlassen 

- mit WBLOCK den Block in eine neue Datei "rausschreiben"

 

WBLOCK.png

 

- Diese neue "Block"Datei nach Bedarf editieren und/oder als Quelle für weitere Blockeinfügungen in beliebigen anderen Dateien benutzen. 

 

Funktioniert alles problemlos ohne "Datenverluste". 

 

Sicherlich wären auch andere Workflows denkbar und möglich. Ich wollte nur mal auf die Schnelle eine Variante testen, ob nicht vielleicht doch irgendwo der Hase im Pfeffer liegt - ist aber nicht. 

Jürgen Palme
Did you find this post helpful? Feel free to Like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.

EESignature

0 „Gefällt mir“-Angaben