• Dieses Forum ist die maschinengenerierte Übersetzung von www.cad3d.it/forum1 - der italienischen Design-Community. Einige Begriffe sind nicht korrekt übersetzt.

Zeichnen Rüstungspunz. (kreist um ein Rechteck)

  • Ersteller Ersteller Dr.Lube
  • Erstellt am Erstellt am

Dr.Lube

Guest
Hallo alle,

Ich brauche ein paar Tipps, um eine ziemlich komplexe Arbeit durchzuführen (zumindest für mich).

Ich sollte die Stanzpanzer (rote Kugeln im Bild) zeichnen.
so unterstütze ich eine Tabellenkalkulation, die mir alle Verifikationen des Gehäuses macht und mir geometrische Parameter liefert.

Ich erkläre es besser.
Das erste, was ich tue, ist, dynamische Blöcke in das Design einzufügen, die positioniert, langgestreckt usw. sind und denen ein paar Parameter zugeordnet sind.

am Ende gehe ich mit Estrdati diese Parameter und legen sie auf Excel für echte Überprüfung auf eigene Faust. Wenn du denkst, du musst das Loft zum Schlagen rüsten, muss ich die Stifte auf den Dwg ziehen.

Ich dachte darüber nach, wie man:
1) Ich habe die Koordinaten des Blocks, die mit der Mitte der x- und y-Säule übereinstimmen.
2) Ich finde die Koordinaten (2 Punkte) der 4 xlines, die auf den Abstand passieren 1 aus der Säule und der Schlinge, 2 vertikal und 2 horizontal
3) die Verbindung mit "Verteilung" den Radius einstellen, um die statische Höhe zu verdoppeln
4) Ich teile die Seiten, die durch die Anzahl der Pins erforderlich +1 erhalten, um die Punkte zu erhalten, auf denen die Kreise des festen Durchmessers gehen (Ich versuche, etwas zu erfinden, um ihn verstehen zu lassen, wenn man noch auf den langen Seiten geht)
4bis) wird auch ein Kreis auf der Mitte der Bögen platziert werden
5) Ich verfahre den Parameter "sr" (was der Schritt ist) für die auf Excel gefundene Seriennummer I (in Beispiel 4) und erhält so 48 Kreise (4 Serie von 12)

Kann mir jemand helfen? Ich bevorzuge die visuelle Lispe:) Ich habe ein paar Dinge getan (einfach)

Danke, Dennis
 

Anhänge

  • punz.jpg
    punz.jpg
    16,4 KB · Aufrufe: 68
  • punz forum.zip
    punz forum.zip
    7,9 KB · Aufrufe: 25
einen Dwg mit der Säule des Bildes befestigen.
ist die xls-Datei immer gleich oder sind verschieden?
Säulengeometrie (c1 und c2) mit 4 Dezimals?
Ich verstehe Punkt 4bis nicht
 
Okay, wenn ich wieder zur Arbeit komme, nehme ich es. cmq in Bezug auf die 4bis gibt es einfach einen Kreis auch an den Ecken, die Sie in die Mitte der Bögen gehen.

die Excel-Datei ist eine andere, aber die Seite der Berechnungen für die Geometrie ist dies. tatsächlich c1 und c2 sind einfach die Größe der Säule, die tatsächlich runde Zahlen sind, Ich muss vergessen, die Präzision einzustellen.. cmq die Werte werden auf einer zufälligen Säule importiert, auf zufällig und länglich bei zufällig
 
Ich muss eine xls haben, um die Daten mit der "getexcel.lsp" Lisp zu importieren, oder? im Moment meine Datei ist ein xlsm.
 
Hi, gp.

Ich habe excel 2013, das Problem ist, dass die Datei Exel-Datei ohne Makro benötigt (so .xls).
Ich habe das Problem durch die Schaffung einer .xls Support-Datei, die die notwendigen Daten enthält und wird jede Öffnung aktualisiert.

Gestern Ich schrieb ein paar Zeilen Code, ich kam, um die ersten 3 Punkte zu decken, die ich gesetzt hatte (im dritten gibt es einen Fehler, der Radius ist immer a1).
anstelle der xlines verwendet ich einfache Linien, die 4 Punkte um das Objekt kombinieren, die dann passend.
die großen Probleme Ich habe die Verbindung hergestellt, ich habe nicht eindeutig das Objekt, das er im Eingang wollte, zu versuchen.

definitiv der Code, für den Sie mit einem Zyklus streamen können, ist dies eine grobe Version. Nur ein paar Ideen zu setzen.

Ich habe hier Zweifel. Wenn ich schon die Kreise (mit ifs zu identifizieren, wie viele) auf dem ersten Offset einfügen möchte, kann ich mich mit Kopien davon leicht nach außen bewegen? (siehe Zeichnung oben)

Danke für die Tipps
Code:
; Einlegepunkte

(Defunc c:punz)

;Bildschichten usw.

(vl-load-com)
(setq acadobject (vlax-get-acad-Objekt)); Zugriff auf Anwendungsobjekte
(setq activedocument (vla-get-activedocument acadobject)); Zugriff auf Dokumentobjekte
(setq schichtbar (vla-get-layers activedocument)); Zugang zu den in der Zeichnung vorhandenen Schichten
(setq punz_layer (vla-add layertable "punching")); Ich habe eine neue Schicht (puz_layer Objekt mit Stempelname) hinzugefügt
(vla-put-color punz_layer) 2) ; ändern Sie die Farbe auf das Objekt punz_layer
;(vlax-dump-object acadobject) ; den Inhalt der Objekte (in diesem Fall acadobject) abzugeben
(setq modelspace (vla-get-modelspace activedocument)); Umstellung auf Modellraumklasse

;Import durch Daten
(setq xl (vlax-get-or-create-object "excel.application"))


(getexcel "c:\\users\studio 3\\\documents\\project in progress\\\\\\\punz\\dati.xls" "sign pins" "q30"); Betrag xls bis q6

(setq xg (tof (getcell "d5"))
(setq yg (tof (getcell "e5"))
(setq c1 (/ (tof) (getcell "f5")) 2),
(setq c2 (/ (tof) (getcell "g5")) 2))
(setq d (tof (getcell "o5"))
(setq dued (* 2 (tof (getcell "o5"))))
(setq a1 (/ (tof (getcell "i5")) 100.000));

;(Befehl "Punkt" xy)
;(Befehl "text" "g" "s" xy "0.2" "0.0" "..." "")


; Datenverarbeitung
(setq pt1 (list (+ xg c1 a1) (+ yg c2 a1) 0)); Punktekoordinaten
(setq pt2 (list (+ xg c1 a1) (- yg c2 a1) 0)
(- xg c1 a1) (- yg c2 a1) 0)
(setq pt4 (- xg c1 a1) (+ yg c2 a1) 0)



; Konstruktionsgeometrie
(setq line1 (vla-addline modelspace (vlax-3d-point pt1) (vlax-3d-point pt2))
(setq l (entlast)
(setq line2 (vla-addline modelspace (vlax-3d-point pt2) (vlax-3d-point pt3))
(setq l2 (entlast)
(setq line3 (vla-addline modelspace (vlax-3d-point pt3) (vlax-3d-point pt4)))
(setq l3 (entlast)
(setq line4 (vla-addline modelspace (vlax-3d-point pt4) (vlax-3d-point pt1))
(setq l4 (entlast)


;(setq lin2 (vla-get-startpoint line2))

;(setvar "filletrad" rad)

(setq a (Befehl "Vereinbarung" l2))
(Befehl "Vereinbarung" l2 l3)
(Befehl "Vereinbarung" l3 l4)
(Befehl "Vereinbarung" l4 l1)
; (Befehl "._fillet" p.2)

(princ)
)
die Datei enthält noch Dinge, die nicht dienen, wie Koordinaten für xline Linien
 

Anhänge

Zuletzt bearbeitet von einem Moderator:
Code:
; Einlegepunkte

(Defunc c:punz)

;Bildschichten usw.

(vl-load-com)
(setq acadobject (vlax-get-acad-Objekt)); Zugriff auf Anwendungsobjekte
(setq activedocument (vla-get-activedocument acadobject)); Zugriff auf Dokumentobjekte
(setq schichtbar (vla-get-layers activedocument)); Zugang zu den in der Zeichnung vorhandenen Schichten
(setq punz_layer (vla-add layertable "punching")); Ich habe eine neue Schicht (puz_layer Objekt mit Stempelname) hinzugefügt
(vla-put-color punz_layer) 2) ; ändern Sie die Farbe auf das Objekt punz_layer
;(vlax-dump-object acadobject) ; den Inhalt der Objekte (in diesem Fall acadobject) abzugeben
(setq modelspace (vla-get-modelspace activedocument)); Umstellung auf Modellraumklasse

;Import durch Daten
(setq xl (vlax-get-or-create-object "excel.application"))


(getexcel "c:\\users\studio 3\\\documents\\project in progress\\\\\\\punz\\dati.xls" "sign pins" "q30"); Betrag xls bis q6

(setq xg (tof (getcell "d5"))
(setq yg (tof (getcell "e5"))
(setq c1 (/ (tof) (getcell "f5")) 2),
(setq c2 (/ (tof) (getcell "g5")) 2))
(setq d (tof (getcell "o5"))
(setq dued (* 2 (tof (getcell "o5"))))
(setq a1 (/ (tof (getcell "i5")) 100.000));
(setq rs1 (/ (tof (getcell "j5")) 100.000)
(setq s (toi (getcell "l5"); Seriennummer

;(Befehl "Punkt" xy)
;(Befehl "text" "g" "s" xy "0.2" "0.0" "..." "")


; Datenverarbeitung
(setq pt1 (list (+ xg c1 a1) (+ yg c2 a1) 0)); Punktekoordinaten
(setq pt2 (list (+ xg c1 a1) (- yg c2 a1) 0)
(- xg c1 a1) (- yg c2 a1) 0)
(setq pt4 (- xg c1 a1) (+ yg c2 a1) 0)



; Konstruktionsgeometrie

(Setq z1 (Liste 1000.0 1000.0 0.0)
(setq z2 (list -1000.0 -1000.0 0.0)


(setq line1 (vla-addline modelspace (vlax-3d-point pt1) (vlax-3d-point pt2))
(setq l (entlast)
(setq line2 (vla-addline modelspace (vlax-3d-point pt2) (vlax-3d-point pt3))
(setq l2 (entlast)
(setq line3 (vla-addline modelspace (vlax-3d-point pt3) (vlax-3d-point pt4)))
(setq l3 (entlast)
(setq line4 (vla-addline modelspace (vlax-3d-point pt4) (vlax-3d-point pt1))
(setq l4 (entlast)


;(setq lin2 (vla-get-startpoint line2))

(setvar "filletrad" a1)

(Befehl "Vereinbarung" l2)
;(setq r1 entlast)
(Befehl "Vereinbarung" l2 l3)
(Befehl "Vereinbarung" l3 l4)
(Befehl "Vereinbarung" l4 l1)

(setq rs rs)
(Repeat)
(setvar "filletrad" (+ a1 rs))
(Befehl "offset" rs l z1 ")
(setq l11 (entlast)
(Befehl "offset" rs l4 z1 ")
(setq l22 (entlast)
(Befehl "offset" rs l2 z2 ")
(setq l33 (entlast)
(Befehl "offset" rs l3 z2 ")
(setq l44 (entlast)
(Befehl "Vereinbarung" l11 l22)
(Befehl "Vereinbarung" l11 l33)
(Befehl "Vereinbarung" l22 l44)
(Befehl "Vereinbarung" l33 l44)



(setq rs (+ rs1 rs)
)



(princ)

)
2015-01-19 11_48_39-Autodesk AutoCAD 2015 - [Disegno1.dwg].pngJetzt kommt die Schönheit. .
Vielleicht ist die Idee, Offset zu tun nicht die beste.. die Kreise auf dem ersten Umkreis wäre besser, sie in der Entfernung zu kopieren. .
Was für ein Chaos?
 
Lassen Sie diesen Ansatz stehen, müssen wir die Koordinaten der Position der Nadeln sofort berechnen.
Wenn du heute Abend Zeit hast, kann ich es mir ansehen.
 
Danke!

Ich dachte, mein Ansatz war ziemlich dumm :d
Ja, ich habe Zeit, mich zu bedanken, aber ich möchte versuchen, etwas zu kombinieren. .

Wenn ich gut verstanden habe, die Linien herum zu zeichnen, ist nicht der richtige Weg.
Ich möchte alle Koordinaten der Nadeln direkt auf der Lippe berechnen. Wird es nicht recht ehrenhaft?connettori.jpgWie Sie sehen können, hängt die Anzahl der Stifte pro Serie (casella m5 von meinem Excel) von der Geometrie ab.. Das ist ein großes Chaos, oder?
Im Moment versuche ich nur, den ersten Fall der rechteckigen Innensäulen (im roten Rechteck des Bildes) zu machen, dann muss ich es auf kreisförmige Säulen, an Bord und Winkeln (da gibt es auch die feine Wand und die Kanten).

Wenn Sie mir heute eine Adresse geben können, werde ich weiter arbeiten und ich werde Ihnen die Arbeitsbelastung beifügen, wenn Sie Zeit haben (wenn Sie haben), also lerne ich auch etwas, das nie schlecht ist:)

Danke, Dennis

ps. mit einer endlosen Serie von, wenn ich gehen könnte, um alle Fälle zu decken.. Ist das klug?
pss. könnte passieren, dass die Säule von t Grad gedreht wird.. eine Runde von allem am Ende der Arbeit könnte die Lösung sein
 
pss. die Koordinaten des Punktes auf der Mitte des was meine Verbindung war nicht so trivial zu finden

Psss. Ich entdeckte den Kond, verwenden Sie den einen anstelle der, wenn
 
Ich habe heute darüber nachgedacht. Es dauerte eine Weile, um die Syntax zu verstehen. im Moment habe ich nur eine Seite mit 4 Fällen gemacht
Es macht mir einen zusätzlichen Punkt, als hätte ich im Zyklus a <=, wenn ich stattdessen eine <

Hier ist der Code:
Code:
(Defun c:punz1 (/)

;Bildschichten usw.

(vl-load-com)
(setq acadobject (vlax-get-acad-object))
Zugang zu den Objekten der Anwendung
(setq activedocument (vla-get-activedocument acadobject))
; Zugang zu Dokumenten
(setq schichtbar (vla-get-layers activedocument)
; Zugang zu den in der Zeichnung vorhandenen Schichten
(setq punz_layer (vla-add layertable "punching"))
;Ich habe eine neue Schicht hinzugefügt (Punkt punz_layer mit Stempelname)
(vla-put-color punz_layer) 2) ; ändern Sie die Farbe auf das Objekt punz_layer
;(vlax-dump-object acadobject) ; den Inhalt der Objekte (in diesem Fall acadobject) abzugeben
(setq modelspace (vla-get-modelspace activedocument)
;Ich akzeptiere die Modellraumklasse

;Import durch Daten
(setq xl (vlax-get-or-create-object "excel.application"))


(lacht)
"c:\\users\study 3\documents\project in progress\\\\punz\\\dati.xls"
"Rohrzeichnung"
"q30"
)

(setq xg (tof (getcell "d5"))
(setq yg (tof (getcell "e5"))
(setq c1 (tof (getcell "f5")); langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige
(setq c2 (tof) (getcell "g5")); langfristig langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige
(setq d (tof (getcell "o5"))
(setq dued (* 2 (tof (getcell "o5"))))
(setq a1 (/ (tof (getcell "i5")) 100.000)
;distanter Stift aus der Säule
(setq rs1 (/ (tof (getcell "j5")) 100.000)
(setq s (toi (getcell "l5"));
(setq n_spille (toi (getcell "m5")); n°-Pins



(setq n_spille (getint "\nnumero brooch: ") ; um die verschiedenen Lieben zu testen
(Siehe Nr. 1)
(setq limit_y (+ yg (/ c2 2.0)) ctrl_y 0)


Rechtssachen
;(cond ((=n 7) "pippo") (t "pippa"))
(cond)
(= n_spille 8)
(Sectq f 2)

(= n_spille 10)
(Sectq f 3)

(= n_spille 12)
(Sectq f 3)

(= n_spille 14)
(Sectq f 4)

(t (prompt " noch nicht implementiert)
)

Der letzte Ball, der (ctrl_y = limit_y) entspricht (ctrl_y = limit_y) .. seltsam ist <===zyklus.

(setq pnt (list (+ xg (/ c1 2.0) a1) (+ yg (/ c2 -2.0) (* (/ c2 f) n)) 0,0));
(vla-addcircle modelspace (vlax-3d-point pnt) 0.03) ;I insert Circle
(seq n (1+ n)); bewegen Sie den Punkt eines Schrittes nach oben
(seq ctrl_y (cadr pnt)); Steuerwert, zweites Element von pnt

)
; Ende
)
 
36_1_50.gif

Code:
(Defun c:test ( / x y c1 c2 a1 sr phi series r slc sll p2 p3 p4 l_ferri all)

---------------------------------------------------------------------------------------------------------------
; Daten aus der Datei xls
;
; Geben Sie den Extraktionscode ein
; den Namen der Variablen behalten
---------------------------------------------------------------------------------------------------------------

(seq x 51.65)
(seq y -60.98)
(Sectq c1 0.4224)
(Setq c2 0.349)
(seq a1 80)
(seq sr 160)
(setq phi 8) ;k k5
(Setq Serie 4);
(Setq r 0,05), Backe j13
(Setq slc 2) ; Kiefer f14 -> kurze Seitenstifte
(Setq sll 2) ; Kiefer f15 -> lange Seitenstifte

---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------



(seq a1 (/ a1 1000.0))
(Setq sr (/ sr 1000.0)
(setq phi (/ phi 1000.0)

; Säulenpunkte
(setq p1 (- x (/c1 2.0)) (+ y (/c2 2.0)))
(setq p2 (list (+ x (/ c1 2.0)))) (+ y (/ c2 2.0)))
(setq p3 (list (+ x (/ c1 2.0)))) (- y (/ c2 2.0)))
(setq p4 (- x (/c1 2.0)))

;Spille auf den Diagonalen
(Sqrt 2)
(Sqrt 2)
(Sqrt 2)
(Sqrt 2)

;Spille auf den Seiten
(falls (< c2) (setq p1a p1 p2 p3 p4 p1a))
(spille_lat p1 p2 sll)
(spille_lat p2 p3 slc)
(spille_lat p3 p4 sll)
(spille_lat p4 p1 slc)

(alles eingestellt (ssadd))

;Plastischer Entwurf
(sing)
(Liste)
(cons 0 "lwpolyline")
(cons 8 "pilaster")
(cons 100 "acdbentity")
(cons 100 "acdbpolyline")
(cons 904)
(cons 70 1)
(cons 10 p1)
(Verbrauch 10 p2)
(cons 10 p3)
(cons 10 p4)
)
)
(alles setzen (ssadd (entlast) alle)

;
(Mapcar)
„(lambda)
(sing)
(Liste)
'(0. "Kreis")
'(8 . "ferri"
(cons 10 e)
(cons 40 (/ phi 2.0)
)
)
(seufzt)
)
L_ferri
)

; Drehung der Säulen und Nadeln
(vl-cmdf "_rotate" alle "" (list x y) "\\")

(princ)
)


(defun pin_diag ( #1 #2 / pf ang)
(setq p (polar #2 (angle #2 #1) (sqrt 2) r))
(setq pf (polar p (setq ang (angle p #2)) r
(setq l_ferri (cons pf l_ferri))
(Repeat (1- Serie)
(setq pf)
(setq l_ferri (cons pf l_ferri))
)
)


(defun pin_lat ( #1 #2 ns / pf ang ang1 d)
(setq ang (angle #1 #2))
(setq ang1 (+ (angle #1 #2) (/ pi 2.0)))
(setq d (-distanz #12) (* a1 2.0) (1-ns))
(setq p (polar #1 (+ ang (* pi 0.25)) (* (qrt 2) a1))
(Repeat-Serie)
(setq pf pf)
(setq l_ferri (cons pf l_ferri))
(Repeat (1-n)
(setq pf (polar pf ang d))
(setq l_ferri (cons pf l_ferri))
)
(Setq p (polar p ang1 sr)
)
)
 
Verrückt! Ich verlor Tage, um etwas zu schreiben und Sie tun alles in einer Nacht?? und in sehr wenigen Linien!
Jetzt versuche ich, den Code im Detail herauszufinden. Einige Dinge sind wirklich zerstört. Ich versuche zu kommentieren und es zurückzugeben. In der Zwischenzeit gebe ich Ihnen einen Fehler (dass ich im Hauptposten einige Beiträge später begangen und korrigiert hatte.. Ich glaube, es gibt keinen Hinweis darauf:
Code:
(Defun spille_diag)
(setq p (polar #2 (angle #2 #1) (* (sqrt 2) a1)))
(setq pf (polar p (setq ang (angle p #2)) a1)
(setq l_ferri (cons pf l_ferri))
(Repeat (1- Serie)
(setq pf)
(setq l_ferri (cons pf l_ferri))
)
)
Gestern aus der Begeisterung, die ich kaufte "die Sprache und ihre Entwicklungsumgebung (Autokad-Experte visuelle Lisp Buch 1)" also vielleicht eines Tages werde ich auf Ihrem Niveau ankommen :)

Dank in der Zwischenzeit und wieder Komplimente. .
 
Hi, gp.
Ich habe den Nachmittag damit verbracht, Ihren Code zu verstehen.
Ich habe Kommentare hinterlassen, gebe mir ein Auge, mir zu sagen, ob ich alles verstanden habe?

dann hätte ich einige Fragen:
1) die erste (alles eingestellt (ssadd)) nur um die Variable alle zu erklären?
2) die "entmake" ist ziemlich zerstört. mit all den Zahlen, die ich vermute identifizieren einige Aktion (Typ 8 für die Schicht, 0 für Polylinea, etc.). War es nicht besser, mit der visuellen Lispe zu schaffen, wie ich es tat?
(3)
Code:
(setq p (polar #2 (angle #2 #1) (* (sqrt 2) a1))) ;"p" ist wiederum der Punkt auf der Säule
(setq pf (polar p (setq ang (angle p #2) a1)) ;"pf" ist wiederum der erste Punkt der Serie
Warum werde ich Koordinaten neu berechnen, die ich bereits hatte? der erste ist einfach der erste Gipfel der Säule, der zweite Teil der Parameter, die der Funktion "spille_diag" zugeführt werden. .
Code:
(defun c:punz_ret ( / x y c1 c2 a1 sr phi series slc sll p1 p2 p3 p4 l_ferri all) ;se with "c:" kann über die Befehlszeile aufgerufen werden
; vor dem "/" gibt es die Argumente, die erforderlich sind, um sich zu erinnern
; die Funktion nach "/" gibt es lokale Variablen
---------------------------------------------------------------------------------------------------------------
; Daten aus der Datei xls
;
; Geben Sie den Extraktionscode ein
; den Namen der Variablen behalten
---------------------------------------------------------------------------------------------------------------
(getexcel "c:\\users\studio 3\\\documents\\project in progress\\\\\\punz\dati.xls" "sign brooch" "s14")
(setq x (tof (getcell "d5")));koordinate baricentro ;atof konvertiert von string zu float
(setq y (tof) (getcell "e5"))
(setq c1 (tof (getcell "f5")); langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige
(setq c2 (tof) (getcell "g5")); langfristig langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige langfristige
(setq a1 (tof (getcell "i5")))
(setq sr (tof) (getcell "j5"))
(setq phi (tof (getcell "k5"))
(setq Serie (toi (getcell "l5"))
(setq slc (atoi (getcell "r14")); kurzseitige Spulen
(setq sll (toi (getcell "s14")), langfristig

---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------

(seq a1 (/ a1 1000.0))
(Setq sr (/ sr 1000.0)
(setq phi (/ phi 1000.0)

; Säulenpunkte
(setq p1 (list (- x (/ c1 2.0)) (+ y (/ c2 2.0)))))))))); identifiziert die Koordinaten der Säule verts von oben nach links, dann im Uhrzeigersinn
(setq p2 (list (+ x (/ c1 2.0)))) (+ y (/ c2 2.0)))
(setq p3 (list (+ x (/ c1 2.0)))) (- y (/ c2 2.0)))
(setq p4 (- x (/c1 2.0)))

;Spille auf den Diagonalen
(spille_diag p1 (polar p1 (* pi 0.75) (* (* (sqrt 2) a1))); "polar" ergänzt die Koordinaten von "p1" an der Ecke "(* pi 0.75)" und Abstand "(* (sqrt 2) a1)"
(Sqrt 2)
(Sqrt 2)
(Sqrt 2)

;Spille auf den Seiten
(falls (< c2) (setq p1a p1 p2 p3 p4 p4 p1a)); wenn c2 > c1 die Punkte umkehrt, so dass die Seiten c1, die "spilla_lat" passieren, stattdessen c2 und umgekehrt sind
(spille_lat p1 p2 sll) c2 dann berühre ich nichts und lege auf lange Seiten c1 lange Seitenstifte
(spille_lat p2 p3 slc) und auf langen Seiten c2 kurze Seitenstifte
(spille_lat p3 p4 sll)
(spille_lat p4 p1 slc)

(alles eingestellt (ssadd))



;Plastischer Entwurf alter Weg
(sing)
(Liste)
(cons 0 "lwpolyline")
(cons 8 "pilaster")
(cons 100 "acdbentity")
(cons 100 "acdbpolyline")
(cons 904)
(cons 70 1)
(cons 10 p1)
(Verbrauch 10 p2)
(cons 10 p3)
(cons 10 p4)
)
)
(alles setzen (ssadd (entlast) alle)




;
(mapcar;"mapcar" wendet die Funktion an, die durch "(lambda (e) (entmake)" definiert wird.
'(lambda (e) ;' entspricht der "quote", dient nicht der Berechnung der Funktion, sondern dem gesamten Argument
(entmake;(Ich passe den Ausdruck und nicht seinen Wert!) )
(list; "lambda" dient zur Definition einer anonymen (defun) Funktion (ohne Namen)
'(0 . "Kreis") ; verwenden, wenn die Definition der Funktion nicht wirklich notwendig ist
'(8 . "ferri"
(cons 10 e)
(cons 40 (/ phi 2.0)
)
)
(ssadd (entlast) alle) ; nach der Erstellung jedes Kreises, fügen Sie es zu Liste alle (es wird dann dienen zu drehen)
)
l_ferri ; "entmake" für das Zeichnen der Kreise auf die Liste der Fähren berechnete Zeit pro Zeit
) ;aus den beiden Funktionen "spille_diag" und "spille_lat"



; Drehung der Säulen und Nadeln
(vl-cmdf "_rotate" alle "" (list x y) "\\")

(princ)
)


(defun pin_diag ( #1 #2 / pf ang ) ;pass als Parameter die Koordinaten der ersten Zeile an den Kanten
(setq p (polar #2 (angle #2 #1) (* (sqrt 2) a1))) ;"p" ist wiederum der Punkt auf der Säule
(setq pf (polar p (setq ang (angle p #2) a1)) ;"pf" ist wiederum der erste Punkt der Serie
(setq l_ferri (cons pf l_ferri));Erhöhen Sie die Liste der Punkte l_ferri, die zunächst nur den ersten Punkt am Rand enthalten
(Repeat (1- Serie) ;Repeat-Zyklus für alle Serien
(setq pf (polar pf ang sr));"pf" nimmt die Koordinaten des zweiten Punktes, der von dem ersten (nach anderen für jeden Zyklus)
(setq l_ferri (cons pf l_ferri));
)
)


(defun pin_lat (#2 ns / pf ang1 d ) ;pass als Parameter die Koordinaten von zwei Punkten und in der Anzahl der Stifte sll oder slc
(seq ang (angle #1 #2); dies ist meine Uhr morgen jetzt
(setq ang1 (+ (angle #1 #2) (/ pi 2.0)))
(setq d (-distanz #12) (* a1 2.0) (1-ns))
(setq p (polar #1 (+ ang (* pi 0.25)) (* (qrt 2) a1))
(Repeat-Serie)
(setq pf pf)
(setq l_ferri (cons pf l_ferri))
(Repeat (1-n)
(setq pf (polar pf ang d))
(setq l_ferri (cons pf l_ferri))
)
(Setq p (polar p ang1 sr)
)
)

2015-01-20 18_48_27-Autodesk AutoCAD 2015 - [asd.dwg].pngVielen Dank für Ihre Hilfe:)
 
Ich ging hinaus und sah den Code an und erkannte etwas, das ich anders machen möchte. .
Code:
(defun pin_lat (#2 ns / pf ang1 d ) ;pass als Parameter die Koordinaten von zwei Punkten und in der Anzahl der Stifte sll oder slc
(setq ang (Winkel #1 #2) ;1 lap) Winkel zwischen p1 und p2 = 0°
(setq ang1 (+ (angle #1 2) (/ pi 2.0)) ;1°giro) an der Ecke wird mehr/2 0> 90° = 1.5708 rad hinzugefügt
(setq d (-entfernung #12) (* a1 2.0) (1-ns)) ;1-turn) den Abstand zwischen p1 und p2 (0.4) - (2x a1) geteilter Schritt 1-sll (=1)
 [B] (setq p (polar #1 (+ ang (* pi 0.25)) (* (sqrt 2) a1))) ;0.25*pi = 45°: das erste Eisen ist unter einem Winkel von 45° von p1!!![/B](Repeat-Serie)
(setq pf p)
(setq l_ferri (cons pf l_ferri))
(Repeat (1-n)
(setq pf (polar pf ang d))
(setq l_ferri (cons pf l_ferri))
)
(Setq p (polar p ang1 sr)
)
der erste Punkt für die eingeschobenen Seitenstifte ist unter einem Winkel von 45° von p1 und dem diskonstanten a1 von der Säule. .

Was ich erreichen möchte, ist vielmehr der Punkt, den ich in der beigefügten Ausführung rot markiert habe (die Abstände werden durch einen "geteilten" erhalten: slx = 2 die Linie wird durch 2 * 2 = 4 usw. geteilt), offensichtlich auf der rechten Höhe. Ich versuchte mit dem Winkel 0,25 Pi zu spielen, aber ich bekam keine Ergebnisse (nicht einmal Symmetrie).

Ideen?2015-01-21 12_55_28-Autodesk AutoCAD 2015 - [asd.dwg].png
 
... während ich einen Fehler mache (dass ich im Hauptposten einige Beiträge später begangen und korrigiert hatte.. Ich glaube, es gibt keinen Hinweis darauf:
Code:
...
(setq p (polar #2 (angle #2 #1) (* (sqrt 2) a1)))[B][COLOR="#FF0000"]a1 bis r[/COLOR][/B](setq pf (polar p (setq) a1);[B][COLOR="#FF0000"]a1 bis r[/COLOR][/B].............
die Richtungen, die Sie hier gegeben haben:
2) Ich finde die Koordinaten (2 Punkte) der 4 xlines, die auf den Abstand passieren 1 aus der Säule und der Schlinge, 2 vertikal und 2 horizontal
3) die Verbindung mit "Vereinbarung" Einstellen des Radius zur Verdoppelung der statischen Höhe
Wenn dies wahr ist und r und nicht a1 verwendet wird, gilt die folgende Erklärung nicht
Code:
(setq p (polar #2 (angle #2 #1) (* (sqrt 2) a1)))[COLOR="#FF0000"]"p" ist wieder der Punkt auf der Säule[/COLOR](setq pf (polar p (setq) a1);[COLOR="#FF0000"]"pf" ist wieder der erste Punkt in der Serie[/COLOR]
In der Tat wären die berechneten Punkte diese:
532.jpg



dann hätte ich einige Fragen:
1) die erste (alles eingestellt (ssadd)) nur um die Variable alle zu erklären?
2) die "entmake" ist ziemlich zerstört. mit all den Zahlen, die ich vermute identifizieren einige Aktion (Typ 8 für die Schicht, 0 für Polylinea, etc.). War es nicht besser, mit der visuellen Lispe zu schaffen, wie ich es tat?
(3)
Code:
(setq p (polar #2 (angle #2 #1) (* (sqrt 2) a1))) ;"p" ist wiederum der Punkt auf der Säule
(setq pf (polar p (setq ang (angle p #2) a1)) ;"pf" ist wiederum der erste Punkt der Serie
Warum werde ich Koordinaten neu berechnen, die ich bereits hatte? der erste ist einfach der erste Gipfel der Säule, der zweite Teil der Parameter, die der Funktion "spille_diag" zugeführt werden. .
1) mit (ssadd) initialisiert die Variable
2) die Entmake-Funktion ist viel schneller, obwohl in dieser Lisp gibt es keine Unendlichkeit von Objekten zu zeichnen, ich bevorzuge es nicht, um die Osnap zu kümmern, außerdem, wenn sie diente, Einstellung auch (8. "Nomenschicht) die Schicht wird erstellt, auch wenn es nicht existiert
3) bereits oben erläutert
4) Ihre Kommentare sind gut.

:smile:


p.s. sobald ich Zeit habe, werfe ich mein Auge auf Ihren letzten Beitrag.
 
Hi, gp.

...

Gestern Ich schrieb ein paar Zeilen Code, ich kam, um die ersten 3 Punkte zu decken, die ich gesetzt hatte (im dritten gibt es einen Fehler, der Radius ist immer a1).
anstelle der xlines verwendet ich einfache Linien, die 4 Punkte um das Objekt kombinieren, die dann passend.

...
Ich hatte einige Posts unten korrigiert, leider macht es mich nicht, die Nachrichten nach 15 Minuten zu ändern ich sie gesendet:(

Ich versuche, die kreisförmige Säule leichter zu machen. . Ich teile die 2*pi für die Anzahl der Strahlen

Ich hoffe, ich kann:)

Danke.

ps. eine aktualisierte Version von "data.xls". (die Datei nicht aktualisieren oder Daten verlieren)Anhang anzeigen Dati.zip
 
Code:
(defun c:punz_rot ( / x y c1 a1 sr phi series ray ang ang1 centre l_ferri all)

(vl-load-com)
(setq acadobject (vlax-get-acad-object))
(setq activedocument (vla-get-activedocument acadobject))
(setq schichtbar (vla-get-layers activedocument)
(setq punz_layer (vla-add schichtbar "pillars")
(vla-put-color punz_layer 2)
(setq modelspace (vla-get-modelspace activedocument)
;(vlax-dump-object acadobject) ; den Inhalt der Objekte (in diesem Fall acadobject) abzugeben


---------------------------------------------------------------------------------------------------------------
; Daten aus der Datei xls
;
;
;
---------------------------------------------------------------------------------------------------------------
(getexcel "c:\\users\studio 3\\\documents\\project in progress\\\\\\punz\dati.xls" "sign brooch" "s14")
(setq xg (tof (getcell "d5"))
(setq yg (tof (getcell "e5"))
(setq c1 (tof (getcell "f5")); Plattendurchmesser

(setq a1 (tof (getcell "i5")))
(setq sr (tof) (getcell "j5"))
(setq phi (tof (getcell "k5"))
(setq Serie (toi (getcell "l5"))
(Setq-Strahlen (atoi (getcell "m5"))


---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------

(seq a1 (/ a1 1000.0))
(Setq sr (/ sr 1000.0)
(setq phi (/ phi 1000.0)
(setq ang1 (/ (* 2 Pi) Strahlen))
(setq center (list xg yg))

; Radialspulen

(setq ang 0)
(Repeat (1- (+ 1 Strahlen))
(setq pf (polare Mitte ang (+ a1 (/ c1 2))))

(setq l_ferri (cons pf l_ferri))
(Repeat (1- Serie)
(setq pf)
(setq l_ferri (cons pf l_ferri))
)
(setq ang (+ ang))
)



(seq all (ssadd) ; variable Aussage

; Zeichnung von Pilasto vlisp
(vla-put-activelayer activedocument (vla-item layertable "pillars"))
(vla-addcircle modelspace (vlax-3d-point center) (/ c1 2); Platteneinsatz

(alles setzen (ssadd (entlast) alle)


; Zeichnung (mit Entmake)
(mapcar;"mapcar" wendet die Funktion an, die durch "(lambda (e) (entmake)" definiert wird.
'(lambda (e) ;' entspricht der "quote", dient nicht der Berechnung der Funktion, sondern dem gesamten Argument
(entmake;(Ich passe den Ausdruck und nicht seinen Wert!) )
(list; "lambda" dient zur Definition einer anonymen (defun) Funktion (ohne Namen)
'(0 . "Kreis") ; verwenden, wenn die Definition der Funktion nicht wirklich notwendig ist
'(8 . "ferri"
(cons 10 e)
(cons 40 (/ phi 2.0)
)
)
(ssadd (entlast) alle) ; nach der Erstellung jedes Kreises, fügen Sie es zu Liste alle (es wird dann dienen zu drehen)
)
l_ferri ; "entmake" für das Zeichnen der Kreise auf die Liste der Fähren berechnete Zeit pro Zeit
) ;aus den beiden Funktionen "spille_diag" und "spille_lat"



; Drehung der Säulen und Nadeln
(vl-cmdf "_rotate" alle "" (list xg yg) "\\")

(princ)
)
:

Ich habe es selbst geschafft!
2015-01-21 16_36_34-Autodesk AutoCAD 2015 - [asd.dwg].pngJetzt müssen Sie verstehen, wie man Fälle an den Rändern zu behandeln.. Ich denke an diese Kreisrunde, da die rechteckige ein Problem hat zu korrigieren.

ps. Ich nehme die Gelegenheit, eine Frage zu stellen:
Sie werden sicherlich feststellen, dass ich die visuelle Lispe verwendet (das ist, was ich studiere)
2) die Entmake-Funktion ist viel schneller, obwohl in dieser Lisp gibt es keine Unendlichkeit der Objekte zu zeichnen ich es vorziehen für ich habe nicht geheilt, falls erforderlich, auch Einstellung (8 . "namelayer) die Schicht erzeugt wird, auch wenn sie nicht existiert
Was meinst du mit dem ersten Fetten? Welche Schwierigkeiten hätte ich haben können?
über die zweite mutige
Code:
(setq punz_layer (vla-add layertable "xxx")
Ich erstelle die gewünschte Schicht und mit
Code:
(vla-put-activelayer activedocument (vla-item layertable "xxx"))
als aktuelle Schicht eingestellt. Es scheint intuitiver zu sein, nicht wahr?
 

Anhänge

  • 2015-01-21 16_36_34-Autodesk AutoCAD 2015 - [asd.dwg].png
    2015-01-21 16_36_34-Autodesk AutoCAD 2015 - [asd.dwg].png
    9,1 KB · Aufrufe: 16
Hier, mit einigen Extra-Code-Linie Ich schaffte auch die kreisförmigen Säulen von Rand und Winkeln (immer kreisförmig)
2015-01-21 16_36_34-Autodesk AutoCAD 2015 - [asd.dwg].png

Code:
...
(Setq Position (getcell "b2")
...
(cond)
((gleiche Position "inside")
(setq ang1 (/ (* 2 Pi))))

(Gleichstellung an Bord)
(setq ang1 (/ pi (1-ray))))

(gleiche "eckige" Position)
(Setq ang1 (/ (/ Pi 2) (1-Strahl))))

(t)
)
...
 

Statistik des Forums

Themen
58.521
Beiträge
499.056
Mitglieder
104.110
Neuestes Mitglied
ChristianR

Zurzeit aktive Besucher

Keine Mitglieder online.
Zurück
Oben