| |  | 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: Delphi (2616 mal gelesen)
|
jörgT Mitglied Konstrukteur

 Beiträge: 28 Registriert: 01.04.2004
|
erstellt am: 02. Dez. 2004 09:48 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, ich möchte mit Delphi7 eine ACAD Zeichnung erstellen bzw. bearbeiten. Dabei sollen nach entsprechenden Berechnungen Linien, Bögen, Polylinien usw. erzeugt werden und danach weiter manipuliert werden. Mir gelingt zwar ein Einstieg in diese Problematik (ich kann eine Zeichnung aufrufen, siehe Programmzeilen), aber weiter komme ich nicht. Deshalb folgende Fragen: - Ist diese Verbindung von ACAD und Delphi überhaupt der richtige Weg? - Muß ich vorher eine ActivX-Komponente installieren? - Wie würde eine Programmzeile z. B. zum erstellen einer Linie aussehen? - Im VBA für ACAD kann ich mir die Objektbibliothek anzeigen. Kann ich diese in Delphi nutzen? - Kann ich die VBA Programmierung nutzen (VBA kann ich selbst nicht, und möchte dies auch nicht großartig lernen) ACADApp := GetActiveOleObject('AutoCad.Application'); ACADApp.Documents.Open('E:\beispiel.dwg'); Vielen Dank im voraus für die Beantwortung dieser Fragen
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
   
 Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 02. Dez. 2004 10:49 <-- editieren / zitieren --> Unities abgeben:          Nur für jörgT
- Ist diese Verbindung von ACAD und Delphi überhaupt der richtige Weg? kann ich dir nicht sagen,kenne Delphi selber nicht. aber da es OLE Objekte ansprechen kann und du diese sprache anscheinend kennst , warum nicht ? - Muß ich vorher eine ActivX-Komponente installieren? eigentlich nein, das instanzieren von autocad und das öfnnen funktioniert ja
- Wie würde eine Programmzeile z. B. zum erstellen einer Linie aussehen? in vb würde das so aussehen Dim p1(0 To 2) As Double Dim p2(0 To 2) As Double p1(0) = 0: p1(1) = 0: p1(2) = 0 p2(0) = 10: p2(1) = 10: p2(2) = 0 Call ACADApp.ActiveDocument.ModelSpace.AddLine(p1, p2) - Im VBA für ACAD kann ich mir die Objektbibliothek anzeigen. Kann ich diese in Delphi nutzen? die methoden und funktionsaufrufe sind normalerweise in jeder Programmiersprache gleich, also kannst du dir in VBA die Objektbibliothek anschauen und auf delphi ummüntzen
- Kann ich die VBA Programmierung nutzen (VBA kann ich selbst nicht, und möchte dies auch nicht großartig lernen) nun ja wenn ich mir deinen code anschaue ACADApp := GetActiveOleObject('AutoCad.Application'); ACADApp.Documents.Open('E:\beispiel.dwg'); ist das ja nicht so viel anders als VBA das gleiche in VBA SET ACADApp = createobject("Autocad.Application") call ACADApp.Documents.Open("E:\beispiel.dwg")
------------------ WWW.FFZELL.AT.TC 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: 02. Dez. 2004 12:13 <-- editieren / zitieren --> Unities abgeben:          Nur für jörgT
|
jörgT Mitglied Konstrukteur

 Beiträge: 28 Registriert: 01.04.2004
|
erstellt am: 03. Dez. 2004 11:54 <-- editieren / zitieren --> Unities abgeben:         
Vielen Dank für die Antworten, nach anfänglichen Schwierigkeiten (der Typ variant und statische Arrays passten nicht zusammen) konnte ich nun erste Linien und Kreise in Acad erstellen (siehe Programmzeilen). Der Verweis auf die Seite von Tony Tanzillo war sehr hilfreich. procedure TForm1.Button3Click(Sender: TObject); var StartP1, EndP1, MoSpace, NewLine: Variant; begin StartP1 := VarArrayCreate([0,2], varDouble); EndP1 := VarArrayCreate([0,2], varDouble); StartP1[0] := 0; StartP1[1] := 0; StartP1[2] := 0; EndP1[0] := 10; EndP1[1] := 10; EndP1[2] := 0; ACADApp := GetActiveOleObject('AutoCad.Application.16'); Mospace := AcadApp.ActiveDocument.Modelspace; NewLine := MoSpace.AddLine(StartP1,EndP1); NewLine.Update; end; In einem nächsten Schritt will ich versuchen, Informationen aus den ACAD Objekten auszulesen. Wenn jemand auch dazu einen Tip hätte, wäre ich dankbar. Ich werde es auf jeden Fall erstmal selbst versuchen.
Gruß Jörg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jörgT Mitglied Konstrukteur

 Beiträge: 28 Registriert: 01.04.2004 Win 10 64Bit Fujitsu Ceslsius Nvidia Quadro ---------- Inventor 2022 Vault Workgroup 2022
|
erstellt am: 06. Dez. 2004 14:22 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, folgende Probleme tun sich auf beim Zugriff auf Objekte in ACAD mit Delphi. Im VBA soll ein Zugriff folgendermaßen aussehen: Dim AuswahlP1 As Object Dim Prompt As String Dim PickedPoint As Variant . . Utility.GetEntity AuswahlP1, PickedPoint, Prompt Mit Delphi habe ich folgendes versucht: var PointP1, AuswahlA1 : Variant; begin ACADApp := GetActiveOleObject('AutoCad.Application.16'); AcadApp.ActiveDocument.utility.getEntity (AuswahlA1, PointP1, 'Eingabe'); //dies soll in einer Zeile stehen end; Dies bringt aber die Fehlermeldung Typkonflikt hervor. Ich denke, das dieser Fehler an der 'Object'-Vereinbarung liegt, welche im VBA durchgeführt wird, in Delphi aber nicht. Was muß ich tun, um auf ein Objekt zugreifen zu können. Danke im voraus, Jörg
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
june Mitglied
 Beiträge: 4 Registriert: 03.02.2005
|
erstellt am: 04. Feb. 2005 13:02 <-- editieren / zitieren --> Unities abgeben:          Nur für jörgT
Hallo Jörg, ich stehe im Moment auch vor dem Problem mit AcadApp.ActiveDocument.utility.getEntity (VAR_IDISPATCH , VAR_POINT, 'TEXTETXETXT'); hast Du das Problem gelöst ? Damit könntest Du mir weiterhelfen. Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| Anzeige: | Infos zum Werbeplatz >> | isuCAD CAD APP für Tiefbau, Umwelt Since 1985, AnkiSOFT Software developes software to design infrastructure projects.
isuCAD has been developed for Water Supply Network Design. It is for Drawing / Modelling / Planning / Design / Analyze / Simulation the water supply network.
The software works under AutoCAD or ZWCAD.
|
|
apcad2 Mitglied
 Beiträge: 4 Registriert: 13.04.2005
|
erstellt am: 17. Aug. 2005 11:29 <-- editieren / zitieren --> Unities abgeben:          Nur für jörgT
var PickPnt: OleVariant; Obj: IDispatch; Poly: IAcadLWPolyline; begin AcadApp.ActiveDocument.Utility.GetEntity(Obj, PickPnt, 'Bitte Polylinie selektieren: '); if (Obj as AcadEntity).EntityType = acPolylineLight then Poly := Obj as IAcadLWPolyline else AcadApp.ActiveDocument.Utility.Prompt('Dieses Objekt ist keine Polylinie!'); end; In diesem Bsp. muss eine Polylinie selektiert werden. Ich hoffe, das bringt euch weiter. [Diese Nachricht wurde von apcad2 am 17. Aug. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |