Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Welche Möglichkeiten gibt es zum Einlesen u. Weiterverarbeiten v. Blöcken in AutoCAD?

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

Anzeige:

Thema geschlossen  Thema geschlossen!
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
  
Von Digital Twins bis Hochleistungs-Computing: PNY präsentiert seine Zukunftstechnologien für die Industrie von morgen, eine Pressemitteilung
Autor Thema:  Welche Möglichkeiten gibt es zum Einlesen u. Weiterverarbeiten v. Blöcken in AutoCAD? (1713 mal gelesen)
kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 16. Nov. 2004 13:18    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 an alle,

man kennt mich hier ja schon.

Bei meiner Konzeptsuche hat sich Grundlegendes geändert. Nach einem intensiven Gespräch mit meinem Vorgesetzten stellte sich heraus, dass wir in der letzten Zeit wohl aneinander vorbeigeredet haben (oder er hat es nicht richtig rübergebracht - wohl eher...). Er will nicht das Gesamtkonzept eines Mastkonfigurators haben, sondern - und das war mir bisher eher unbekannt - nur ganz bestimmte Dinge wissen:

- Welche Möglichkeiten gibt es, Blöcke programmtechnisch in AutoCAD
  einzulesen? Das muß nicht unbedingt VBA sein, sondern wenn das
  z.B. über C++, DXF, AutoLISP oder anderes besser geht, wäre das
  auch in Ordnung.

- Welche Möglichkeiten gibt es, diese eingefügten Bauteile
  programmtechnisch auf dem Bildschirm verschieben, verdrehen - also
  allgemein ändern zu können? Welche Informationen/Eigenschaften oder
  was auch immer von den Bauteilen sind dazu notwendig?

Das ist das, was mein Vorgesetzter will, nichts anderes. Bloß hat er mir das bis jetzt nicht so rübergebracht und ich war immer auf dem falschen Dampfer oder habe mir viel zu viel Gedanken über andere Dinge gemacht. Ich soll ein Konzept aufstellen, welche Möglichkeiten es gibt, welche die Beste/n ist/sind. Er will nicht wissen, wie das programmiert wird, sondern nur wie es geht!

Vielleicht kann mir ja jemand weiterhelfen.

MfG
Tobias

[Diese Nachricht wurde von kiltswitch am 16. Nov. 2004 editiert.]

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: 13530
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 16. Nov. 2004 13:28    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 kiltswitch 10 Unities + Antwort hilfreich

alle Befehle ( oder fast alle) in Autocad kannst du auch per Lisp, ActivX(VBA/VLISP)ansprechen und ausführen!

Also z.B. Autocad kennt den Befehl _insert zum Blockeinfügen
Programmtechnisch kannste das auf unterster Stufe mit (command "_insert" Blockname '(0 0 0) 1 1 0) realisieren.

Genauso ist es mit schieben und drehen usw. Um ein Bauteil mit einem Befehl anzusprechen mußt du nur eindeutig auf es zurückgreifen können. Dafür gibts z.B. Handle -> Gruppencode 5 in DXF

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 16. Nov. 2004 13:45    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 Thomas,
zunächst mal Danke für Deine Antwort.

Zitat:
Original erstellt von CADmium:
alle Befehle ( oder fast alle) in Autocad kannst du auch per Lisp, ActivX(VBA/VLISP)ansprechen und ausführen!


aha... gibt es auch noch andere Möglichkeiten? Nicht bloß LISP und VBA?

Zitat:

Also z.B. Autocad kennt den Befehl _insert zum Blockeinfügen
Programmtechnisch kannste das auf unterster Stufe mit (command "_insert" Blockname '(0 0 0) 1 1 0) realisieren.


ist das eine LISP-Bfehlszeile? Und andere Möglichkeiten? Es muß nicht unbedingt VBA und LISP sein!

Zitat:

Genauso ist es mit schieben und drehen usw. Um ein Bauteil mit einem Befehl anzusprechen mußt du nur eindeutig auf es zurückgreifen können. Dafür gibts z.B. Handle -> Gruppencode 5 in DXF


Geht das nur über Handle von DXF? Ich benötige Informationen, ob es auch noch anders geht.

Erstmal vielen Dank für Deinen Tipp. Aber wie gesagt, mein Chef will auch noch andere Alternativen zu LISP haben - falls es die überhaupt gibt (wenn nicht, dann muß er damit leben).

Tobias

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: 13530
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 16. Nov. 2004 13:51    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 kiltswitch 10 Unities + Antwort hilfreich

such mal nach  ActivX .. com-Schnittstelle ... da wirst du feststellen das du auch Delphi C++, VB oder was weiß ich nehmen kannst, um auf Autocad aufzusetzen.

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 16. Nov. 2004 14:53    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

Danke Thomas!

Und hast Du ein kleines Beispiel auf Lager, wie man aus AutoCAD-Dateien Blöcke in eine andere AutoCAD-Datei enlesen kann?

Und dann vielleicht noch eins, wie man einen Block in der Zeichnung verschieben/drehen kann?

MfG
Tobias

Zitat:
Original erstellt von CADmium:
such mal nach  ActivX .. com-Schnittstelle ... da wirst du feststellen das du auch Delphi C++, VB oder was weiß ich nehmen kannst, um auf Autocad aufzusetzen.


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

harryk
Mitglied
Projektleiter


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

Beiträge: 124
Registriert: 19.08.2003

erstellt am: 16. Nov. 2004 16:38    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 kiltswitch 10 Unities + Antwort hilfreich

hi,
ich weiss nicht ob die autocad entwicklerhilfe bei dir installiert ist aber da findest du alles was du brauchst. guckst du:

Sub Example_InsertBlock()
    ' This example creates a block containing a circle.
    ' It then inserts the block.

    ' Create the block
    Dim blockObj As AcadBlock
    Dim insertionPnt(0 To 2) As Double
    insertionPnt(0) = 0#: insertionPnt(1) = 0#: insertionPnt(2) = 0#
    Set blockObj = ThisDrawing.Blocks.Add(insertionPnt, "CircleBlock")
   
    ' Add a circle to the block
    Dim circleObj As AcadCircle
    Dim center(0 To 2) As Double
    Dim radius As Double
    center(0) = 0: center(1) = 0: center(2) = 0
    radius = 1
    Set circleObj = blockObj.AddCircle(center, radius)
  '---------------------------------------------------------
    ' Insert the block
    Dim blockRefObj As AcadBlockReference
    insertionPnt(0) = 2#: insertionPnt(1) = 2#: insertionPnt(2) = 0
    Set blockRefObj = ThisDrawing.ModelSpace.InsertBlock(insertionPnt, "CircleBlock", 1#, 1#, 1#, 0)
   
    ZoomAll
   
End Sub

wenn du "CircleBlock" durch "pfad\block.dwg" ersetzt wird stattdessen eine autocad datei eingefügt. den code bis zur gestrichelten linie brauchst du dann nicht. verschieben geht mit blockRefObj.move..., drehen mit blockRefObj.rotate... ist hervorragend in der hilfe beschrieben. spiel damit!

gruss, harry

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

kiltswitch
Mitglied



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

Beiträge: 189
Registriert: 27.10.2004

Windows 98 (Version 4.10.1998)
AutoCAD 2000i

erstellt am: 16. Nov. 2004 16:54    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 Harry,

meinst Du mit der Entwicklungshilfe die Hilfe der VBA-Umgebung in AutoCAD?

Danke für den Code. Ich suche aber hauptsächlich - der Code ist trotzdem wichtig und interessant - Fakten darüber, wie das allgemein geht. Also mit welchen Programmiersprachen (LISP, VBA etc?) das möglich ist. Also ganz allgemein wie das geht und eigentlich - erstmal - nicht den Code. Und was für Informationen dazu notwendig sind (z.B. Eigenschaften des Blockes oder so).

MfG
Tobias

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

harryk
Mitglied
Projektleiter


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

Beiträge: 124
Registriert: 19.08.2003

erstellt am: 16. Nov. 2004 18:18    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 kiltswitch 10 Unities + Antwort hilfreich

ja, die autocad hilfe natürlich...
wie schon mehrfach erwähnt, lisp oder vba spielt erstmal keine rolle. lisp ist stärker aber was deine blöcke angeht wird es dir in vba an nichts mangeln. blöcke können durch lisp oder vba, wie in der normalen autocad bearbeitung,
-eingefügt
-geschoben
-skaliert
-gedreht
werden, damit besitzen sie für die lage nur diese eigenschaften die auch wieder abgefragt werden können:
-einfügepunkt
-skalierung
-drehung
vba biete dir aber die möglichkeit mit anderen z.b. office anwendungen daten zu tauschen oder z.b. autocad von excel aus steuern zu lassen.

dein vorgehen könnte so aussehen:
1. bauteil einfügen (basis)
2.einfügepunkt und drehung für das nächste bauteil aus bauteil 1 berechnen, bauteil 2 einfügen
d.h. du wirst für das einfügen des nächsten bauteils immer die daten des vorherigen oder eines anderen bauteils benötigen. da deine konstruktion immer unterschiedlich sein kann wirst du im code z.b den eingefügten masttypen abfragen, den neuen einfügepunkt für das nächste bauteil damit berechnen usw. usw.

nehmen wir an dein mastblock typ xxyy3000 hat den einfüge punkt am fuß in der mitte, wo befindet sich der der anschlusspunkt für das nächste bauteil? meinetwegen 2850mm höher und 300mm nach rechts. du addierst also zu deinen einfügepunkt des mastes in x 300mm und in y 2850mm und fügst da das neue bauteil ein. der mast ist gespiegelt, also x =-300? dementsprechend die darstellungs art des neuen bauteils auswählen und einfügen. in 2d darstellung wirst du berücksichtigen müssen das es nötig sein wird die blöcke in verschiedenen ansichten zur verfügung zu haben und entsprechend anzuwenden.

diese bedingungen, anschlusspunkte, ansicht etc. kannst nur du bestimmen weil du die materie kennst (solltest), dabei kann ich dann leider nicht helfen aber wenn ihr alle blöcke vorliegen habt, warum fängst du nicht einfach an? ist die beste methode die problematik zu verstehen und dann kannst du auch gezieltere fragen stellen! und wenn du halt nach 2 monaten alles in die tonne kloppst und neu anfängst weil du schlauer geworden bist, na und? machen alle die angefangen haben.

gruss, harry

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

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: 4191
Registriert: 17.05.2001

ACAD20XX, defun-tools

erstellt am: 16. Nov. 2004 18:20    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 kiltswitch 10 Unities + Antwort hilfreich

Hallo Kiltswitch,

kannst du mal bitte versuchen genau zu schreiben was du nun möchtest?
CADmium fragst du nach Beispielen wie man Blöcke einfügen kann - Harry sagst du, dass das zwar toll ist, du das aber nicht brauchst (erstmal - nicht den Code??

Mir scheint, du stocherst immer noch ganz tief im Dunkeln - und ehrlich: Du und Dein Chef, ihr redet nicht aneinander vorbei, ihr wißt beide nicht, worum es eigentlich geht. Hart, aber meine Meinung.
Begründung:

Zitat:
kitswitch schreibt:
- Welche Möglichkeiten gibt es, Blöcke programmtechnisch in AutoCAD
  einzulesen? Das muß nicht unbedingt VBA sein, sondern wenn das
  z.B. über C++, DXF, AutoLISP oder anderes besser geht, wäre das
  auch in Ordnung.

Die Antworten stehen bereits in dem geschlossenen Thread, sieh dir die Beiträge von Axel (mapcar) an!
Antwort: Lisp (AutoLISP, VisualLISP), VB/VBA,ObjectARX(C), .Net
Zitat:
kitswitch schreibt:
- Welche Möglichkeiten gibt es, diese eingefügten Bauteile
  programmtechnisch auf dem Bildschirm verschieben, verdrehen - also
  allgemein ändern zu können? Welche Informationen/Eigenschaften oder
  was auch immer von den Bauteilen sind dazu notwendig?


Damit sind wir wieder bei dem Thread, der nun (mit Recht) geschlossen ist.
Soll ich dir jetzt Blanko-Code geben, der so intelligent ist, dass er das macht, was du dir in 3 Wochen überlegst?
Kiltswitch! Denk doch mal nach! Die Antwort hast du schon vor ewigen Zeiten bekommen - ich wiederhole die hier jetzt nicht. Und wieder die Aufforderung: Lies dir den besagten Thread noch einmal durch .. das steht dort alles drin!


Geht das in diesem Thread auf dem bisherigen Niveau weiter, dann werde ich dafür sorgen, dass dieser ebenso alsbald geschlossen wird. Es macht wirklich keinen Spaß!

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

mapcar
Mitglied
CADmin



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

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:25    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 kiltswitch 10 Unities + Antwort hilfreich

Ich schließe mich Holgers Angenervtheit einfach mal an. Tobias, ich finde wirklich, du solltest wirklich erstmal den guten Rat annehmen, ein Wenig in den Foren zu lesen. Aber du bist bisher nicht mal in der Lage, ein Zeile Lisp als Lisp zu erkennen. Daraus schliesse ich, dass du bisher nicht einen Blick ins Lisp-Forum geworfen hast, sonst wäre dir so etwas wie (command ...) doch sicher schon mal begegnet.

Tja, um dir die Zeit zum Lesen zu geben, mache ich auch gleich wieder einen Deckel drauf - bevor das wieder ausufert. In diesem Thread hier habe ich jedenfalls nichts gefunden, was nicht schon besprochen worden wäre - ausser der Hinweis auf GC 5. Aber da ist deine Reaktion typisch: Ohne auch nur einen Gedanken daran verschwendet zu haben, willst du schon wieder was anderes. Vielleicht ist ja dein Chef doch ein guter Pädagoge;-)

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

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


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

Administrative Optionen: Beitrag öffnen | Archivieren/Bewegen | Beitrag melden!

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

(c)2025 CAD.de | Impressum | Datenschutz