| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Karo Muster parameter-gesteuert erstellen (1697 mal gelesen)
|
Ted 511 Mitglied Konstrukteur
Beiträge: 43 Registriert: 16.06.2004 Win XP x86 SP3 AMD 64 X2 Dual, 3,2GHz, 2GB RAM GraKa: ATI FireGL V5200 Inventor Pro 2009 & 2010
|
erstellt am: 10. Feb. 2010 17:55 <-- editieren / zitieren --> Unities abgeben:
Hallo! Ich habe mit VBA noch sehr wenig bis gar keine Erfahrung, soviel vorweg... Ist es möglich, ein Karo-Muster aus neun quadratischen Feldern zu erstellen, diese neun Felder mit 1 bis 9 zu definieren und über eine Steuerdatei, zB Exceltablle, beliebige Felder schwarz zu füllen? ZB möchte ich das im ersten Muster das Feld 1 3 5 7 9 Füllen, im zweiten Muster möchte ich Fläche 2 4 6 8 füllen, usw. Das Ganze werden insgesamt 55 Muster, die eine Art Codierung darstellen sollen. Habt Ihr eine Ahnung wie man da von NULL vorgehen muss? Vielen Dank im vorraus... Ted ------------------ TED Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Feb. 2010 18:36 <-- editieren / zitieren -->
Hi, viele Möglichkeiten, die Angabe von - Systeminfo (damit wir genaues Produkt und -Version kennen) - eine Musterzeichnung - und die Beschreibung, was damit alles gemacht werden soll (nur einmal erstellen, oder laufend an geänderte Gegebenheiten anpassen, ...)? kann jedenfalls hilfreich sein. Ich könnte mir vorstellen, für jedes Quadrat einen Block zu verwenden, der ein Attribut hat (damit ich es später identifizieren kann, um welches Quadrat in der Anordnung es sich handelt) sowie eine Polylinie plus Schraffur. Die Schraffur über Sichtbarkeitsparameter gesteuert. Ich kann mir genauso vorstellen (jetzt schon abhängig von AutoCAD-Version), ein MPolygon zu verwenden. Dieses hat direkt eine Eigenschaft, ob es gefüllt oder nicht-gefüllt darzustellen ist, die ID-Information könnte über EED's geregelt werden. Und noch so viel mehr, ist schon eine ziemlich grundsätzliche Frage. - alfred -
------------------ www.hollaus.at |
Ted 511 Mitglied Konstrukteur
Beiträge: 43 Registriert: 16.06.2004 Win XP x86 SP3 AMD 64 X2 Dual, 3,2GHz, 2GB RAM GraKa: ATI FireGL V5200 Inventor Pro 2009 & 2010
|
erstellt am: 10. Feb. 2010 19:36 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort! Ich habe die Systeminfo im Profil aktualisiert. Musterzeichnung ist anbei. Es sollen wie gesagt, 55 verschiedene Muster generiert werden, die eine Art Codierung darstellen. Das heißt dass anhand der Felder eine Binär-zahl ausgelesen werden kann. Es werden also 55 verschiedene Muster benötigt. Wenn die Felder eine definition haben, könnte man mittels Tabelle einen Binär-code aus 0 und 1 festlegen. Hat ein Feld den Wert 0 ist es weiß, hat es den Wert 1 ist es schwarz. Die 55 Felder müssen dann auf einer 2D Zeichnung an einem bestimmten Ort platziert werden. Das sollte, wenn möglich ebenfalls in der Tabelle definiert werden können. Ich habe keine Ahnung wie das umzusetzten ist. Ich könnte mir aber vorstellen, dass es möglich ist, darum schreibe ich meine Frage hier ... Vielen Dank! Ted Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Feb. 2010 20:13 <-- editieren / zitieren -->
Hi, Deine Systeminfo zeigt leider kein AutoCAD, wenn Du Inventor einsetzt und die Programmierung in Inventor zu geschehen hat, dann wäre dieser Platz hier leider das falsche Forum. Hier ist 'AutoCAD VBA'. >> Ich habe keine Ahnung wie das umzusetzten ist.
Wie weit reichen Deine Kenntnisse in AutoCAD und in VBA? Dieses Forum hier gibt schon eine Menge Hilfestellung zu konkreten Detailproblemen (Code zeigen, Problem dazu beschreiben, ev. Zeichnung dazu und dann Antwort), es wird aber hier nicht erwartet werden können, dass sich wer kostenlos ein paar Stunden hinsetzt und es für Dich macht. >> Ich könnte mir aber vorstellen, dass es möglich ist
Das was Du bis jetzt beschreibst, zumindest was bisher bekannt ist, sehe ich auch als möglich an. Es ist halt bisher oberflächlich angedeutet, aber die genaue Arbeitsweise des gesamten Konstrukts ist ja dann erst dann zu definieren, wenn es losgehen soll. - alfred - ------------------ www.hollaus.at |
Brischke Ehrenmitglied V.I.P. h.c. CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 11. Feb. 2010 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für Ted 511
Hallo Ted, die Aufgabe ist ja vom Programmablauf nicht so schwer. Da mir Lisp mehr liegt als VB, habe ich deine Aufgabe mal eben in Lisp runtergetippt: Ich habe mich entschlossen entweder Polylines(Leerfelder) oder Solid-Schraffuren (gefüllte Felder) zu erstellen. Das Programm ist so variabel, dass es auch größere Felder abdecken kann und auch die Kantenlänge eines Quadrates einstellbar ist. Falls du beim ausprobieren des Codes (für Acad) Probleme hast, dann melde dich einfach. Falls du es gar nicht ausprobieren willst/kannst .. dann kannst du wenigstens den Programmablauf/aufbau analysieren.
Code:
;| Parameter: 1 - spt - Startpunkt (list Real Real Real) 2 - kantenlange - Länge der Kante eines einzelnen Quadrats 3 - InX - Anzahl der Quadrate in X-Richtung 4 - InY - Anzahl der Quadrate in Y-Richtung 5 - liste - Liste der ausgefüllten QuadrateBeispiel: 4x4-Matrix, Kantenlänge 10.0 und Felder 1 3 5 9 13 16 werden gefüllt. (karocode (getpoint "\nStartpunkt:") 10.0 4 4 '(1 3 5 9 13 16)) |; (defun karocode (spt kantenlange InX InY liste / row column field rpt cpt ) (setq row 0 field 1) (repeat InY (setq column 0 rpt (mapcar '- spt (list 0.0 (* kantenlange row) 0.0)) ) (repeat InX (setq cpt (mapcar '+ rpt (list (* kantenlange column) 0.0 0.0))) (if (member field liste) (_quadratHatch cpt kantenlange) (_quadrat cpt kantenlange) ) (setq field (1+ field) column (1+ column) ) ) (setq row (1+ row)) ) ) (defun _quadratHatch (pt kantenlange) (entmake (list '(0 . "HATCH") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") '(8 . "0") '(100 . "AcDbHatch") (cons 10 (list (car pt)(cadr pt) 0.0));(10 0.0 0.0 0.0) '(210 0.0 0.0 1.0) '(2 . "SOLID") '(70 . 1) '(71 . 0) '(91 . 1) '(92 . 1) '(93 . 4) '(72 . 1) (cons 10 (list (car pt)(cadr pt) 0.0));(10 0.0 0.0 0.0) (cons 11 (list (+ (car pt) kantenlange) (cadr pt) 0.0));(11 10.0 0.0 0.0) '(72 . 1) (cons 10 (list (+ (car pt) kantenlange) (cadr pt) 0.0));(10 10.0 0.0 0.0) (cons 11 (list (+ (car pt) kantenlange) (- (cadr pt) kantenlange) 0.0));(11 10.0 -10.0 0.0) '(72 . 1) (cons 10 (list (+ (car pt) kantenlange) (- (cadr pt) kantenlange) 0.0));(10 10.0 -10.0 0.0) (cons 11 (list (car pt) (- (cadr pt) kantenlange) 0.0));(11 0.0 -10.0 0.0) '(72 . 1) (cons 10 (list (car pt) (- (cadr pt) kantenlange) 0.0));(10 0.0 -10.0 0.0) (cons 11 (list (car pt)(cadr pt) 0.0));(11 0.0 0.0 0.0) '(97 . 0) '(75 . 0) '(76 . 1) '(98 . 1) (cons 10 (list (car pt)(cadr pt) 0.0));(10 0.0 0.0 0.0) '(450 . 0) '(451 . 0) '(460 . 0.0) '(461 . 0.0) '(452 . 1) '(462 . 1.0) '(453 . 2) '(463 . 0.0) '(63 . 5) '(421 . 255) '(463 . 1.0) '(63 . 7) '(421 . 16777215) '(470 . "LINEAR") ) ) ) (defun _quadrat (pt kantenlange) (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(410 . "Model") '(8 . "0") '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) '(43 . 0.0) '(38 . 0.0) '(39 . 0.0) (cons 10 (list (car pt)(cadr pt))) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (list (+ (car pt) kantenlange) (cadr pt))) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (list (+ (car pt) kantenlange) (- (cadr pt) kantenlange))) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) (cons 10 (list (car pt) (- (cadr pt) kantenlange))) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) '(210 0.0 0.0 1.0) ) ) )
Bei Fragen ... Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|