Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  massengruppe

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  massengruppe (1113 mal gelesen)
fca_mi2
Mitglied
Bauingenieur


Sehen Sie sich das Profil von fca_mi2 an!   Senden Sie eine Private Message an fca_mi2  Schreiben Sie einen Gästebucheintrag für fca_mi2

Beiträge: 505
Registriert: 10.01.2003

ACAD2018

erstellt am: 02. Jan. 2007 09:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

mit nachfolgendem progrämmchen (befehl: "eee") erstelle ich einen satteldachbinder. wenn ich diesen zu einer massengruppe zusammenfassen möchte, verschwinden die neuen objekte und vom binder ist nichts mehr zu sehen. was mache ich falsch ?

(defun fc_adt_winkel (ep zp / dx dy dz alpha beta epx epy epz zpx zpy zpz lxy lxz ld)
   
  (setq epx (nth 0 ep))
  (setq epy (nth 1 ep))
  (setq epz (nth 2 ep))

 
  (setq zpx (nth 0 zp))
  (setq zpy (nth 1 zp))
  (setq zpz (nth 2 zp))

 
  (setq dx (- zpx epx))
  (setq dy (- zpy epy))
  (setq dz (- zpz epz))

  (setq lxy (expt (+ (* dx dx) (* dy dy)) 0.50))
  (setq lxz (expt (+ (* dx dx) (* dz dz)) 0.50))
  (setq ld (expt (+ (* lxy lxy) (* dz dz)) 0.50))
 
  ;alpha
  (setq alpha (atan (abs dy) (abs dx)))

  (if (and (>= dx 0.0) (> dy 0))
    (princ)
  )
  (if (and (< dx 0.0) (>= dy 0))
    (setq alpha (- (* 1.0 3.1415927) alpha))
  )
  (if (and (<= dx 0.0) (< dy 0))
    (setq alpha (+ (* 1.0 3.1415927) alpha))
  )
  (if (and (> dx 0.0) (<= dy 0))
    (setq alpha (- (* 2.0 3.1415927) alpha))
  )
  (if (= dy 0.0)
    (setq alpha 0.0)
  )

  ;beta
  (setq beta (atan (abs dz) (abs dx)))

  (if (and (>= dx 0.0) (> dz 0))
    (princ)
  )
  (if (and (< dx 0.0) (>= dz 0))
    (setq beta (- (* 1.0 3.1415927) beta))
  )
  (if (and (<= dx 0.0) (< dz 0))
    (setq beta (+ (* 1.0 3.1415927) beta))
  )
  (if (and (> dx 0.0) (<= dz 0))
    (setq beta (- (* 2.0 3.1415927) beta))
  )
  (if (= dz 0.0)
    (setq beta 0.0)
  )
  ;gamma
  (setq gamma (atan (abs dz) (abs lxy)))

  (if (and (>= lxy 0.0) (> dz 0))
    (princ)
  )
  (if (and (< lxy 0.0) (>= dz 0))
    (setq gamma (- (* 1.0 3.1415927) gamma))
  )
  (if (and (<= lxy 0.0) (< dz 0))
    (setq gamma (+ (* 1.0 3.1415927) gamma))
  )
  (if (and (> lxy 0.0) (<= dz 0))
    (setq gamma (- (* 2.0 3.1415927) gamma))
  )
  (if (= dz 0.0)
    (setq gamma 0.0)
  ) 
  (list alpha (* alpha (/ 180 3.1415927)) beta (* beta (/ 180 3.1415927)) gamma (* gamma (/ 180 3.1415927)) lxy lxz ld)
)

(defun fc_adt_plinie (polypunktliste layername farbnr gc70 / n tmpliste lelement)
  (setq lelement (entlast))
  (setq tmpliste (list
'(0 . "POLYLINE")
(cons 8 layername)
(cons 62 farbnr)
'(66 . 1)
        (cons 70 gc70)
))
  (entmake tmpliste)


  (foreach n polypunktliste
  (setq tmpliste (List
    '(0 . "VERTEX")
    ))
    (setq tmpliste (append tmpliste (list (cons 10 (trans n 1 0)))))
    (setq tmpliste (append tmpliste (list '(70  . 32))))
    (entmake tmpliste)
    );foreach

  (setq tmpliste (list
    '(0 . "SEQEND")
    ))
  (entmake tmpliste)
  (princ)
  (if (/= (entlast) lelement)
    (entlast)
    (nil)
    );if
)

(defun fc_flaeche_an_pfad_ausrichten2 (querschn ep zp s / winkelliste ep epx epy epz zp zpx zpy zpz pliste)
 
  (setq epx (nth 0 ep))
  (setq epy (nth 1 ep))
  (setq epz (nth 2 ep))
   
  (setq zpx (nth 0 zp))
  (setq zpy (nth 1 zp))
  (setq zpz (nth 2 zp))

  (setq winkelliste (fc_adt_winkel ep zp))

  (setq pliste nil)
  (setq pliste (list ep))
  (foreach n querschn
    (if (= s 0)
      (setq pliste (append pliste
(list
  (list (+ epx (* (cos (+ (nth 0 winkelliste) 1.57079635)) (nth 0 n)) (* (cos (+ (nth 2 winkelliste) 1.57079635)) (nth 1 n)))
        (+ epy (* (sin (+ (nth 0 winkelliste) 1.57079635)) (nth 0 n)))
        (+ epz (* (sin (+ (nth 2 winkelliste) 1.57079635)) (nth 1 n))))
    )
  )
    )
      );if
    (if (= s 1)
      (setq pliste (append pliste
(list
  (list (+ epx (* (cos (+ (nth 0 winkelliste) 1.57079635)) (nth 0 n)) (* (cos (+ 0.0 1.57079635)) (nth 1 n)))
        (+ epy (* (sin (+ (nth 0 winkelliste) 1.57079635)) (nth 0 n)))
        (+ epz (* (sin (+ 0.0 1.57079635)) (nth 1 n))))
    )
  )
    )
      );if   
    );foreach

    (fc_adt_plinie
      pliste
      "test"
      1
      9)
  (entlast)
)

(defun fc_adt_pliste_verzerren (pliste fx fy fz / tmpliste n)
  (setq tmpliste nil)
  (foreach n pliste
    (if tmpliste
      (setq tmpliste (append tmpliste (list (list (* (nth 0 n) fx)
  (* (nth 1 n) fy)
  (* (nth 2 n) fz)))))
      (setq tmpliste (list (list (* (nth 0 n) fx)
(* (nth 1 n) fy)
(* (nth 2 n) fz)))))
  );foreach
  tmpliste
)


;fc_adt_ftbinder_satteldach
(defun c:eee (/ l1 l2 f1 f2 f3 bfo bfu hf1 hf2 hf3 hf4 bs ok h1 alpha
    p1 p2 faktor1 alphabog
      pfad1 q1 obergurt osmodes pfad2 pfad3 q2 untergurt
      pfad4 steg q3 auswahl)

  (command "bks" "w")
 
(princ "\n*")
  (setq l1 15.00
l2 16.00
f1 0.02
f2 0.01
f3 0.02
f4 0.2
ok 7.01
bfo 0.6
bfu 0.3
bs 0.15
bf 0.3
hf1 0.1
hf2 0.05
hf3 0.07
hf4 0.2
h1 1.50
h2 0.5
alpha 3.0)

  (setq alphabog (* (/ 3.1415927 180.0) alpha))

  ;faktor
  (setq faktor1 (/ (/ (+ hf1 hf2) (cos alphabog)) (+ hf1 hf2)))

  (setq auswahl (ssadd))

  ;**************************** OBERGURT ******************************************
  ;pfad für obergurt
  (setq pfad1 (fc_adt_plinie (list (list 0.0 0.0 ok)
  (list (+ (- (/ l2 2)) f1 f4)
0.0
(- ok (* (atan alphabog) (- (/ l2 2) f1 f4)))
))
"pfad" 4 8)
);if
  (setq pfad2 (fc_adt_plinie (list (list 0.0 0.0 ok)
  (list (- (/ l2 2) f1 f4)
0.0
(- ok (* (atan alphabog) (- (/ l2 2) f1 f4)))
))
"pfad" 4 8)
);if 
;(fc_adt_pliste_verzerren pliste fx fy fz)
  (setq obergurt (list (list (+ (/ bfo 2)) 0.0 0.0)
      (list (+ (/ bfo 2)) (- hf1) 0.0)
      (list (+ (/ bs 2)) (- 0.0 hf1 hf2) 0.0)
      (list (- (/ bs 2)) (- 0.0 hf1 hf2) 0.0)
      (list (- (/ bfo 2)) (- hf1) 0.0)
      (list (- (/ bfo 2)) 0.0 0.0)
      )
)
  (princ "\nobergurt:")
  (princ obergurt)
  (setq obergurt (fc_adt_pliste_verzerren obergurt 1.0 faktor1 1.0))

  (setq q1 (fc_flaeche_an_pfad_ausrichten2
    obergurt
    (list 0.0 0.0 ok)
    (list (- 0.0 (/ l2 2) f1 f4)
  0.0
  (- ok (* (atan alphabog) (- (/ hf2 2) f1 f4)))
  )
    1)
)
  (setq osmodes (getvar "osmode"))
  (setvar "osmode" 0)
 
  (command "_extrude" q1 "" "pfad" pfad1)

  (command "masselementconvert" (entlast) "" "ja" "")

  (command "draworder" "l" "" "unten")

  (ssadd (entlast) auswahl)

  (setq q1 (fc_flaeche_an_pfad_ausrichten2
    obergurt
    (list 0.0 0.0 ok)
    (list (- 0.0 (/ l2 2) f1 f4)
  0.0
  (- ok (* (atan alphabog) (- (/ hf2 2) f1 f4)))
  )
    1)
)

  (command "_extrude" q1 "" "pfad" pfad2)

  (command "masselementconvert" (entlast) "" "ja" "")

  (command "draworder" "l" "" "unten")

  (ssadd (entlast) auswahl)

  (entdel pfad1)
  (entdel pfad2)
 
;**************************** UNTERGURT ******************************************
  ;pfad für obergurt
  (setq pfad3 (fc_adt_plinie (list (list (+ (- (/ l1 2)) f3)
0.0
(- ok h1)
)
  (list (- (/ l1 2) f3)
0.0
(- ok h1)
))
"pfad" 4 8)
)


  (setq untergurt (list (list (+ (/ bfu 2)) 0.0 0.0)
(list (+ (/ bfu 2)) hf4 0.0)
(list (+ (/ bs 2)) (+ hf4 hf3) 0.0)
(list (- (/ bs 2)) (+ hf4 hf3) 0.0)
(list (- (/ bfu 2)) hf4 0.0)
(list (- (/ bfu 2)) 0.0 0.0)
      )
)
    (princ "\nuntergurt:")
  (princ untergurt)
  (setq q2 (fc_flaeche_an_pfad_ausrichten2
    untergurt
    (list (+ (- (/ l1 2)) f3) 0.0 (- ok h1))
    (list (- (/ l1 2) f3) 0.0 (- ok h1))
    1)
)
 
  (command "_extrude" q2 "" "pfad" pfad3)

  (command "masselementconvert" (entlast) "" "ja" "")

  (command "draworder" "l" "" "unten")

  (ssadd (entlast) auswahl)

  (entdel pfad3)

;**************************** STEG ******************************************
  ;pfad für obergurt
  (setq pfad4 (fc_adt_plinie (list (list 0.0 (- (/ bs 2)) (- ok h1))
  (list 0.0 (+ (/ bs 2)) (- ok h1)))
"pfad" 4 8)
)


  (setq steg (list (list (- (/ l1 2) f3) (+ hf4 hf3) 0.0)
  (list (- (/ l1 2) f3) (- h1 (* (atan alphabog) (- (/ l2 2) f1)) h2) 0.0)
  (list (- (/ l2 2) f3) (- h1 (* (atan alphabog) (- (/ l2 2) f1)) h2) 0.0)
  (list (- (/ l2 2) f3) (- h1 (* (atan alphabog) (- (/ l2 2) f1))) 0.0)
  (list 0.0 h1 0.0)
  (list (- f3 (/ l2 2)) (- h1 (* (atan alphabog) (- (/ l2 2) f1))) 0.0)
  (list (- f3 (/ l2 2)) (- h1 (* (atan alphabog) (- (/ l2 2) f1)) h2) 0.0)
  (list (- f3 (/ l1 2)) (- h1 (* (atan alphabog) (- (/ l2 2) f1)) h2) 0.0)
  (list (- f3 (/ l1 2)) (+ hf4 hf3) 0.0)
      )
)
  (setq q3 (fc_flaeche_an_pfad_ausrichten2
    steg
    (list 0.0 (- (/ bs 2)) (- ok h1))
    (list 0.0 (+ (/ bs 2)) (- ok h1))
    1)
)
 
  (command "_extrude" q3 "" "pfad" pfad4)

  (command "masselementconvert" (entlast) "" "ja" "")

  (command "draworder" "l" "" "unten")

  (ssadd (entlast) auswahl)

  (entdel pfad4)

 

 
 
  (princ "\nFertig !")
  (setvar "osmode" osmodes)
  (princ)
  );defun

------------------
MfG
Frank

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 02. Jan. 2007 18:24    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für fca_mi2 10 Unities + Antwort hilfreich

"masselementconvert"  ist wohl ein ADT-Befehl?! Vielleicht will der ja kein Objekt, sondern besteht auf einen Auswahlsatz?! also (ssadd (entlast)) .. aber das testen mußt du selber.


------------------
      - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz