| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: TinSurface (DGM) Höhenwerte (1267 mal gelesen)
|
Silvan01 Mitglied
Beiträge: 128 Registriert: 28.04.2009 AutoCAD Civil 2009 AutoCAD Civil 2010 Visual Studio 2008
|
erstellt am: 25. Sep. 2009 13:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich will aus einem DGM verschiedene Höhenwerte abfragen. Zum Beispiel welche Höhe ist an dem Punkt 45|45 usw. Ich programmiere in Vb.Net. Habe das Objekt schon als Autodesk.Civil.Land.DatabaseServices.TinSurface Das Hauptproblem ist, dass ich im Internet nirgends ein Beispiel zu diesem Objekt gefunden habe. Grüße Silvan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 25. Sep. 2009 16:16 <-- editieren / zitieren -->
Hi, aus Kompatibilitätsgründen zu älteren Versionen bin ich bei Zugriff auf DGM noch COM-basierend, vielleicht hilft's trotzdem: Code: Dim tSurf As IAeccTinSurface = CType(TrAct.GetObject(DgmObjID, DatabaseServices.OpenMode.ForRead, True, True).AcadObject, IAeccTinSurface) Try Dim tDgmHeight As Double = tSurf.FindElevationAtXY(X, Y) tRetVal = New Geometry.Point3d(X, Y, tDgmHeight)
- alfred - ------------------ www.hollaus.at |
Silvan01 Mitglied
Beiträge: 128 Registriert: 28.04.2009 AutoCAD Civil 2009 AutoCAD Civil 2010 Visual Studio 2008
|
erstellt am: 16. Dez. 2009 14:59 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich würde dieses IAeccTinSurface gerne drehen. In dem VB.NET Code würde ich das mit: Code: Dim curUCSMatrix As Matrix3d = AcadDoc.Editor.CurrentUserCoordinateSystem Dim curUCS As CoordinateSystem3d = curUCSMatrix.CoordinateSystem3d Dim tMoveMat As Matrix3d = Matrix3d.Rotation(Angle, curUCS.Zaxis, StartPoint)
und anschließend ein Code: tsurf.transformby(tMoveMat)
anwenden. Das klappt allerdings nicht (Ich nehm mal an bei COM funktioniert das mit dem Transformby anders). Kann mir jemand helfen wie ich das richtig hinbekomme? Es wird als Übergabeparameter nur "object" angezeigt. Grüße Silvan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 16. Dez. 2009 18:38 <-- editieren / zitieren -->
Hi, Fehlermeldung bekomme ich auch, sowohl wenn ich .TransformBy verwende als auch wenn ich .Rotate verwende. TransformBy hätte ich noch verstanden, dass .Rotate nicht funkt, mutmasse ich mal einen Bug dahinter (bin aber jetzt nicht tiefer hineingestiegen, also muss mein erster Eindruck nicht richtig sein). Dieses funktioniert aber:
Code: Dim tAcadDoc As ApplicationServices.Document = ApplicationServices.Application.DocumentManager.MdiActiveDocument Dim tDocLock As ApplicationServices.DocumentLock = Nothing Dim tTrAct As DatabaseServices.Transaction = NothingTry tDocLock = tAcadDoc.LockDocument tTrAct = tAcadDoc.TransactionManager.StartTransaction Dim tSel As EditorInput.PromptEntityResult = tAcadDoc.Editor.GetEntity("DGM wählen: ") If (tSel IsNot Nothing) AndAlso (tSel.Status = EditorInput.PromptStatus.OK) Then Dim tEnt As Entity = CType(tTrAct.GetObject(tSel.ObjectId, OpenMode.ForWrite, False, True), Entity) Dim tRotBasePnt As Geometry.Point3d = tEnt.GeometricExtents.MinPoint tEnt.TransformBy(Geometry.Matrix3d.Rotation(Math.PI, New Geometry.Vector3d(0, 0, 1), tRotBasePnt)) tTrAct.Commit() ....
Der Unterschied hier ist, dass ich das Element als 'normales' Datenbank-Entity öffne (und kein Casting nach TinSurface oder AeccSurface mache), dann klappts auch mit dem .TransformBy! HTH, - alfred -
------------------ www.hollaus.at |
Silvan01 Mitglied
Beiträge: 128 Registriert: 28.04.2009 AutoCAD Civil 2009 AutoCAD Civil 2010 Visual Studio 2008
|
erstellt am: 21. Dez. 2009 15:39 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|