Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Karo Muster parameter-gesteuert erstellen

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
  
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


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

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 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

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

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


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

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 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


DSC_6444.jpg

 
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

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



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

Beiträge: 4187
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 11. Feb. 2010 09:03    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 Ted 511 10 Unities + Antwort hilfreich

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 Quadrate

Beispiel: 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 >>)

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)2024 CAD.de | Impressum | Datenschutz