| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: temporäre Linien zeichnen (1021 / mal gelesen)
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 08:22 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 08. Jul. 2016 08:28 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 08:57 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, es gibt da leider nichts zum hochladen. Wie schon geschrieben es sollen Linien dargestellt werden die vergleichbar dem GRDRAW unter Lisp sind. Diese möchte ich für eine gewisse Zeit anzeigen und auch erhalten bleiben wenn gezoomt/gepant wird. Genauso wie diese erzeugt wurden möchte ich diese via vb.net wieder verschwinden lassen. Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 08. Jul. 2016 09:47 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
was heißt für eine gewisse Zeit? Jigg - wird angezeigt, solange ein GetXXX-Befehl aktiv ist. Overruling - wird immer angezeigt. Eine funktionierende Lösung werde ich hier nicht präsentieren, die gibt's ja ohnehin im Netz zu finden. Um von Deiner Fehlermeldung auf eine Ursache schließen und dann eine Lösung anbieten zu können, muss man den Code kennen, die Zeichnung, auf die der Code angewandt wird und nach Möglichkeit wissen, welche Stelle des Codes die Fehlermeldung verursacht. Wie stellst du dir die Hilfe hier vor? Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingenieur Studio HOLLAUS Mitglied CAD / CAFM / GIS Beratung-Programmierung-Schulung
Beiträge: 1049 Registriert: 06.11.2008 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks) RKV .... CAFM+mehr HMap ... Vermessung und Verkehr OoC .... Raumplanung CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
|
erstellt am: 08. Jul. 2016 09:58 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Hilft dieses (bitte prüfen auf Nebenwirkungen, nicht getestet) Code: Dim tAcadDoc As CAD_ApplicationServices.Document = Application.DocumentManager.MdiActiveDocument Dim tTrAct As Transaction = Nothing Try tTrAct = tAcadDoc.Database.TransactionManager.StartTransaction Dim tPnt1 As CAD_Geometry.Point3d = New CAD_Geometry.Point3d(0, 0, 0) Dim tPnt2 As CAD_Geometry.Point3d = New CAD_Geometry.Point3d(1, 2, 3) Dim tLine As CAD_DatabaseServices.Line = New CAD_DatabaseServices.Line(tPnt1, tPnt2) Dim tModSP As CAD_DatabaseServices.BlockTableRecord = ISHAcTools.getModelSpace(tTrAct, tAcadDoc.Database, OpenMode.ForWrite) tModSP.AppendEntity(tLine) tLine.Draw() tLine.Erase() tTrAct.Commit() Catch ex As Exception Finally If tTrAct IsNot Nothing Then tTrAct.Dispose() : tTrAct = Nothing End Try
------------------
www.cars4fun.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 10:21 <-- editieren / zitieren --> Unities abgeben:
|
Ingenieur Studio HOLLAUS Mitglied CAD / CAFM / GIS Beratung-Programmierung-Schulung
Beiträge: 1049 Registriert: 06.11.2008 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks) RKV .... CAFM+mehr HMap ... Vermessung und Verkehr OoC .... Raumplanung CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
|
erstellt am: 08. Jul. 2016 10:32 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Code: Kannst Du mir zumindest sagen was da sein soll
BlocktableRecord vom Modelspace öffnen Zitat: Verstehe ich den Code so, dass du auf dem aktuellen Layer eine Linie zeichnest und diese wieder im Anschluss löscht ?
Zuerst dem ModelSpace anhängen (damit die Linie zumindest weiß, in welchem Space es gültig sein soll, dann .Draw um das Element in dem Space an den richtigen Koordinaten anzuzeigen (nachdem kein Layer angegeben ist, kann es nur der aktuelle Layer sein) und nachfolgend wird das Element wieder gelöscht, weil es ja nicht in der Database sein soll (Deinem Wunsch gemäß). ------------------
www.cars4fun.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 10:43 <-- editieren / zitieren --> Unities abgeben:
Moin! Zitat: Zuerst dem ModelSpace anhängen (damit die Linie zumindest weiß, in welchem Space es gültig sein soll, dann .Draw um das Element in dem Space an den richtigen Koordinaten anzuzeigen (nachdem kein Layer angegeben ist, kann es nur der aktuelle Layer sein) und nachfolgend wird das Element wieder gelöscht, weil es ja nicht in der Database sein soll (Deinem Wunsch gemäß).
+1 Aber was hinter dem ISHAcTools steht verstehe ich dennoch nicht - weder mein Objektkatalog noch Google zeigt mir was für .getModelSpace!! ??? Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingenieur Studio HOLLAUS Mitglied CAD / CAFM / GIS Beratung-Programmierung-Schulung
Beiträge: 1049 Registriert: 06.11.2008 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks) RKV .... CAFM+mehr HMap ... Vermessung und Verkehr OoC .... Raumplanung CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
|
erstellt am: 08. Jul. 2016 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Zitat: Aber was hinter dem ISHAcTools steht verstehe ich dennoch nicht
Das ist eine unserer Libraries, die ich verwendet hatte, um das Beispiel für Dich zu machen. Ich dachte, den BlockTableRecord des Modellbereichs zu öffnen wäre kein Problem. Hier der Ersatz dafür: Code: Dim tBlTb As BlockTable = CType(TrAct.GetObject(tAcadDoc.Database.BlockTableId, OpenMode.ForRead, False), BlockTable) Dim tModSp as BlockTableRecord = CType(TrAct.GetObject(tBlTb("*MODEL_SPACE"), OpenMode.ForWrite, False), BlockTableRecord)
------------------
www.cars4fun.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 08. Jul. 2016 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
... das musst du dir selber bauen (sofern der Inhalt dieser Routine jetzt nicht noch gepostet wird) - ist ja aber schnell gemacht. Vielleicht hast du den für diese Funktion passenden Code auch schon in einem anderen Projekt .. den brauch man ja immer wieder. Diese Subroutine gibt den BlockTableRecord des Modellspace zum schreiben geöffnet zurück. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 10:57 <-- editieren / zitieren --> Unities abgeben:
Ich danke Euch. Zitat: Vielleicht hast du den für diese Funktion passenden Code auch schon in einem anderen Projekt .. den brauch man ja immer wieder.
das war bisher nicht so. AutoCAD Objekte sind für mich bisher Nebensache da ich im wesentlichen auf Objekte der Topobase zugreife. Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 11:15 <-- editieren / zitieren --> Unities abgeben:
Moin! ich habe das jetzt einmal zusammengebaut und ich vermute da noch einen Schreibfehler den ich entsprechend angepasst habe. Dabei ist folgendes herausgekommen: Code: Dim tAcadDoc As Autodesk.AutoCAD.ApplicationServices.Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument Dim tTrAct As Transaction = Nothing Try tTrAct = tAcadDoc.Database.TransactionManager.StartTransaction Dim tPnt1 As Autodesk.AutoCAD.Geometry.Point3d = New Autodesk.AutoCAD.Geometry.Point3d(0, 0, 0) Dim tPnt2 As Autodesk.AutoCAD.Geometry.Point3d = New Autodesk.AutoCAD.Geometry.Point3d(1, 2, 3) Dim tLine As Autodesk.AutoCAD.DatabaseServices.Line = New Autodesk.AutoCAD.DatabaseServices.Line(tPnt1, tPnt2) ' die nächsten zwei Zeilen sind der Inhalt von getModelSpace Dim tBlTb As BlockTable = CType(tTrAct.GetObject(tAcadDoc.Database.BlockTableId, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead, False), BlockTable) Dim tModSp As Autodesk.AutoCAD.DatabaseServices.BlockTableRecord = CType(tTrAct.GetObject(tBlTb("*MODEL_SPACE"), Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, False), BlockTableRecord) 'Dim tModSP As Autodesk.AutoCAD.DatabaseServices.BlockTableRecord = getModelSpace(tTrAct, tAcadDoc.Database, Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite) tModSP.AppendEntity(tLine) tLine.Draw() MsgBox("abwarten") tLine.Erase() tTrAct.Commit() Catch ex As Autodesk.AutoCAD.Runtime.Exception MsgBox(ex.ToString) Finally If tTrAct IsNot Nothing Then tTrAct.Dispose() tTrAct = Nothing End Try
Wenn ich das ausführe, dann bekomme ich für die Zeile Code: Dim tModSp As Autodesk.AutoCAD.DatabaseServices.BlockTableRecord = CType(tTrAct.GetObject(tBlTb("*MODEL_SPACE"), Autodesk.AutoCAD.DatabaseServices.OpenMode.ForWrite, False), BlockTableRecord)
diese Meldung: Zitat: {"eLockViolation"}
Kann man mir hier auch nochmal einen Tipp geben. ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ingenieur Studio HOLLAUS Mitglied CAD / CAFM / GIS Beratung-Programmierung-Schulung
Beiträge: 1049 Registriert: 06.11.2008 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks) RKV .... CAFM+mehr HMap ... Vermessung und Verkehr OoC .... Raumplanung CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
|
erstellt am: 08. Jul. 2016 11:30 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Zitat: {"eLockViolation"}
Wenn Du Code startest mit Modifikationen oder Objektzugriffen im Schreibmodus, dann geschieht das Document-Locking entweder durch die Befehlsdefinition (der Befehl den Du definierst für den Durchlauf der Procedur) oder Du musst das Document währenddessen selbst sperren (DocumentLock). Vor Zugriff im Schreibmodus: Code: Dim tDocLock as DocumentLock = tAcadDoc.LockDocument
Und am Ende (nach TransAction.Dispose) Code: tDocLock.Dispose
Das hätte auch schon geholfen (um hier nicht warten zu müssen): >>>click<<<. ------------------
www.cars4fun.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 11:56 <-- editieren / zitieren --> Unities abgeben:
Moin ! erst einmal Danke - probiere ich jetzt aus. Zitat: Das hätte auch schon geholfen (um hier nicht warten zu müssen): >>>click<<<.
habe auch gesucht - aber ehrlich nicht verstanden ! Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 12:13 <-- editieren / zitieren --> Unities abgeben:
Moin! erst einmal noch ein ganz großes Dankeschön für die Unterstützung - aber dennoch habe ich eine ergänzende Frage. Die Linie macht genau das was diese soll - aber wird erst gezeichnet, wenn die Funktion komplett abgeschlossen ist. Wenn ich eine Msgbox einbaue, dann kann diese noch am Ende stehen es wird nicht gezeichnet. In meiner Anwendung soll der Weg den ich über verschiedene Punkte definiere vorab temporär mit diesen Linien dargestellt werden. Aber wenn die Linien nun nicht gezeichnet werden, dann nützt mir das alles nichts.
Frage: kann man irgendwie das Zeichnen (vorzeitig) erzwingen ?? Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 08. Jul. 2016 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
Jigg / Overrule Mensch, schreib doch mal in ganzen Sätzen und in vollständigen Zusammenhängen was du möchtest .. es gibt geeignetere Lösungen als die gepostete. Du willst also für die Zeit, in der du beim User die Punkte abfragst, das bis dahin jeweils gültige Ergebnis am Bildschirm darstellen? passende Technologie: Jigg oder: Du willst, für eine unbestimmte Zeitdauer, in der Anwender sonstwas im AutoCAD anstellt, ein Zwischenergebnis auf Basis bisher eingegebener Punkte am Bildschirm präsentieren? passende Technologie: Overrule: Grüße! Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen.
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 12:40 <-- editieren / zitieren --> Unities abgeben:
Moin ! jo! aber das wußte ich Anfangs nicht das diese Fragestellung auch für diesen Lösungsansatz gelten könnte. JIGG habe ich einmal gegoogeled, als es um die Frage der Objektbearbeitung vor einigen Tagen ging - aber ehrlich fast nichts verstanden. Vielleicht auch weil Objektemanipulieren in der Topobase anders verläuft. Deshalb suche ich auch weiterhin ein (einfaches) Beispiel für JIGG!!! Gruß Jan ------------------ jan :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools
|
erstellt am: 08. Jul. 2016 13:00 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|
tappenbeck Mitglied Vermessungsingenieur
Beiträge: 1213 Registriert: 30.05.2002 AutoCAD (Map)2019, Topobase, MapEdit, Lisp, .vb.net
|
erstellt am: 08. Jul. 2016 13:58 <-- editieren / zitieren --> Unities abgeben: Nur für tappenbeck
|