| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Polygon (919 mal gelesen)
|
cnc Mitglied cnc,..
Beiträge: 37 Registriert: 19.09.2004
|
erstellt am: 16. Nov. 2004 15:42 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 16. Nov. 2004 18:22 <-- editieren / zitieren --> Unities abgeben: Nur für cnc
Hallo cnc, mit VBA kann man kein Polygon zeichnen. Man kann maximal ein Programm schreiben, welches dann ein Polygon zeichnet. ;-) An welcher Stelle klappts denn nicht? Wo ist genau das Problem, dass deine Versuch (du hast es schon versucht?) nicht laufen? Grüße Holger ------------------ Holger Brischke (defun - Lisp over night! AutoLISP-Programmierung für AutoCAD Da weiß man, wann man's hat! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 16. Nov. 2004 18:53 <-- editieren / zitieren --> Unities abgeben: Nur für cnc
Hi auch, kleine Lachnummer zum Dienstagabend ;-))) Die Mathematik wollte mich nicht so recht küssen ... Code:
Sub some_stuff() Dim dummy As AcadLine Dim p1#(2), p2#(2), coo Dim n#, r#, i% Const pi# = 3.14159265358979 n = 10: r = 3 'Anzahl Seiten, Aussenradius p2(0) = r: p2(1) = 0: p2(2) = 0 Set dummy = ThisDrawing.ModelSpace.AddLine(p1, p2) ReDim p#((n + 1) * 2 - 1) For i = 0 To UBound(p) Step 2 coo = dummy.EndPoint p(i) = coo(0) p(i + 1) = coo(1) dummy.Rotate p1, 360 / n * pi / 180 Next dummy.Delete ThisDrawing.ModelSpace.AddLightWeightPolyline p End Sub
Okay, und - ist zwar nur die Hälfte, aber kann schon mal passieren ;-) Hapert irgendwie am Bogenmaß, na egal, siehe Prozedurname. lg Nancy
[Diese Nachricht wurde von startrek am 16. Nov. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mapcar Mitglied CADmin
Beiträge: 1250 Registriert: 20.05.2002 Die Phönizier haben das Geld erfunden - aber warum so wenig? (Johann Nepomuk Nestroy)
|
erstellt am: 16. Nov. 2004 19:02 <-- editieren / zitieren --> Unities abgeben: Nur für cnc
Hallo cnc, in AutoCAD werden Polygone als geschlossene Polylinien dargestellt. Ich nehme an, dass es dir um regelmäßige Polygone geht, ja? Die Innenwinkelsumme beträgt (N - 2) * 180°, und wenn du das durch N teilst, hast du den Innenwinkel einer Ecke. Als Beispiel: Beim regelmäßigen 13-Eck beträgt die IWS 1980°, ein IW hat also etwa 152,3°. Und ferner gilt, dass die Kantenlänge so berechnet werden kann: KL = 2Ru * cos(IW/2) (Ru ist der Radius des Umkreises). Die Beziehung zwischen Umkreis und Inkreis lautet Ri = Ru * sin(IW/2). Und dass die innenliegenden Winkel der Segmente 180° - IW betragen, ist offensichtlich. Das ist genau das selbe wie 360° / N. Eine Funktion zu schreiben, die ein Polygon erzeugt, ist an sich nicht schwierig. Mehr Aufwand wirst du mit dem Drumherum haben (Ansatz, Positionierung und Ausrichtung). Gruß, Axel Strube-Zettler ------------------ (defun - Lisp over night - AutoLisp-Programmierung für AutoCad - Da weiß man, wann man's hat Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
startrek Moderator Architekt
Beiträge: 1361 Registriert: 13.02.2003 .
|
erstellt am: 16. Nov. 2004 19:10 <-- editieren / zitieren --> Unities abgeben: Nur für cnc
ich editiere jetz nicht nochmal, habe gesehen [als ich den Code bereits gepostet hatte], dass im Redim beim n+1 'ne Klammer fehlte und diese hinzueditiert. Jetzt isses nicht mehr nur die Hälfte, aber trotzdem keine geschlossene Pline. However, und - ja Axel, nix geht über bissel Mathe;-) lg Nancy Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cnc Mitglied cnc,..
Beiträge: 37 Registriert: 19.09.2004
|
erstellt am: 16. Nov. 2004 21:21 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|