| |  | 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
 
 Beiträge: 189 Registriert: 27.10.2004 Windows 98 (Version 4.10.1998) AutoCAD 2000i
|
erstellt am: 16. Nov. 2004 13:18 <-- editieren / zitieren --> Unities abgeben:         
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
       

 Beiträge: 13530 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 16. Nov. 2004 13:28 <-- editieren / zitieren --> Unities abgeben:          Nur für kiltswitch
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
 
 Beiträge: 189 Registriert: 27.10.2004 Windows 98 (Version 4.10.1998) AutoCAD 2000i
|
erstellt am: 16. Nov. 2004 13:45 <-- editieren / zitieren --> Unities abgeben:         
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
       

 Beiträge: 13530 Registriert: 30.11.2003 ACAD 2008 Mechanical
|
erstellt am: 16. Nov. 2004 13:51 <-- editieren / zitieren --> Unities abgeben:          Nur für kiltswitch
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
 
 Beiträge: 189 Registriert: 27.10.2004 Windows 98 (Version 4.10.1998) AutoCAD 2000i
|
erstellt am: 16. Nov. 2004 14:53 <-- editieren / zitieren --> Unities abgeben:         
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
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 16. Nov. 2004 16:38 <-- editieren / zitieren --> Unities abgeben:          Nur für kiltswitch
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
 
 Beiträge: 189 Registriert: 27.10.2004 Windows 98 (Version 4.10.1998) AutoCAD 2000i
|
erstellt am: 16. Nov. 2004 16:54 <-- editieren / zitieren --> Unities abgeben:         
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
 
 Beiträge: 124 Registriert: 19.08.2003
|
erstellt am: 16. Nov. 2004 18:18 <-- editieren / zitieren --> Unities abgeben:          Nur für kiltswitch
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

 Beiträge: 4191 Registriert: 17.05.2001 ACAD20XX, defun-tools
|
erstellt am: 16. Nov. 2004 18:20 <-- editieren / zitieren --> Unities abgeben:          Nur für kiltswitch
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

 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 / zitieren --> Unities abgeben:          Nur für kiltswitch
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 >>)
 |