| | | 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, eine Pressemitteilung
|
Autor
|
Thema: Bemaßung (1359 mal gelesen)
|
AlexanderRi Mitglied Elektroniker
Beiträge: 20 Registriert: 05.05.2010
|
erstellt am: 18. Mai. 2010 15:40 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich arbeite mit VS2008, VB.NET und und greife über COM auf AutoCAD zu, da die Software ein seperates Programm (exe) ist. Ich will eine Linie bemaßen. Das funktioniert auch. Das einzige Problem ist die Position der Maßlinie. Diese soll natürlich nicht genau über der Linie liegen, sondern mit einem Abstand von z.B. 10 Zeichnungseinheiten parallel zu der Linie. Wie macht man das? Wahrscheinlich mit textPosition? Wie berechnet man diese dann? Dim objAcadDimAligned As Interop.Common.AcadDimAligned = Nothing objAcadDimAligned = objAcadDocument.ModelSpace.AddDimAligned(objAcadLine.StartPoint, objAcadLine.EndPoint, textPosition) Alexander Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 18. Mai. 2010 17:52 <-- editieren / zitieren -->
Hi, >> Wie berechnet man diese dann? Wo willst Du die Textposition denn hin? So wird diese auch zu berechnen sein. Wenn ich diesen Code (VBA) probiere:
Code: Dim tPnt1(2) As Double Dim tPnt2(2) As Double Dim tPntT(2) As Double tPnt1(0) = 10# tPnt1(1) = 10# tPnt2(0) = 20# tPnt2(1) = 11# tPntT(0) = 15# tPntT(1) = 15# Dim tDimObj As AcadDimAligned Set tDimObj = ThisDrawing.ModelSpace.AddDimAligned(tPnt1, tPnt2, tPntT)
...und mir dann den Punkt 15,15,0 zeigen lasse, dann sehe ich, dass das ein Punkt auf der Maßhilfslinie ist. Natürlich ist aber dabei zu beachten, wie Dein Bemaßungsstil eingestellt ist, denn hier gibt es unterschiedliche Positionierungs- und Einstellungsmöglichkeiten für den Text. Hoffe das hilft, denn was die eigentliche Frage wäre, hab ich scheinbar nicht herauslesen können. - alfred - PS: es reicht, die Frage in einem Forum zu stellen. ------------------ www.hollaus.at |
AlexanderRi Mitglied Elektroniker
Beiträge: 20 Registriert: 05.05.2010
|
erstellt am: 18. Mai. 2010 22:34 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich suche die Lösung für eine ausgerichtete Bemaßung. So hat die Linie zum Beispiel die Punkte P1(10,10) und P2(20,20). Die Bemaßungslinie soll PARALLEL zur Linie in einem Abstand von 10 Zeichnungseinheiten positioniert werden. Wie berechne ich jetzt den Punkt für die Textposition, denn die Bemaßung will ich automatisieren? Irgendwie muss es doch möglich sein, aus P1 und P2 und dem Abstand 10 den Punkt für die Textposition berechnen zu können. Alexander Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 18. Mai. 2010 22:47 <-- editieren / zitieren -->
Hi, 3 Varianten, die mir jetzt auf die Schnelle einfallen: a) Steigung zwischen Punkt1:Punkt2 ausrechnen, aus der Steigung deltaX und deltaY tauschen, dann hast Du die Steigung im 90°-Winkel, und mit dieser Steigung von Punkt1 ausgehend die Distanz 10 aufschlagen. b) alles Sinus/Cosinus-artige: Winkel zwischen Punkt1 und Punkt2 rechnen, diesen Winkel +90° und dann 10-Distanz (auf Punkt1 bezogen) dazu rechnen c) mit VB.NET die AutoCAD-internen Objekte dazu nutzen (Vector3D sowie Transformationsmatrix-Objekten) Die Vektorenrechnung wird die schnellste sein (wenn auch hier auf Div/0 aufgepasst werden muss), die mit den AutoCAD-Objekten die faulste Methode (hier ist auch mal bei AutoCAD 2007 oder 2008 ein Fehler enthalten gewesen, wo Winkel sogar falsch gerechnet wurden, wurde aber mit ServicePack behoben). Hilfen dazu (Suchbegriffe Geometrie, Vektoren, Steigung) bekommst Du im Internet ohne Ende, z.B. >>>hier<<<. HTH, - alfred - ------------------ www.hollaus.at |
Wene71 Mitglied
Beiträge: 28 Registriert: 25.04.2010 Win8.1 Pro x64, ACAD 2015, VS 2013
|
erstellt am: 19. Mai. 2010 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für AlexanderRi
Hallo, in VBA gibts Polarpoint...
Code: PtNeu = ThisDrawing.Utility.PolarPoint(AusgangsPt, Winkel, Abstand)
in VB.Net nicht! Hier eine kleine Funktion für VB.Net die das gleiche macht.
Code: 'Von einem Ausgangspunkt über Winkel und Abstand den neuen Punkt ermitteln. Public Function PolarPoint(ByVal BasePoint As Point3d, ByVal Angle As Double, ByVal Distance As Double) As Point3d Dim x As Double = Distance * Math.Cos(Angle) Dim y As Double = Distance * Math.Sin(Angle) Return New Point3d(BasePoint.X + x, BasePoint.Y + y, BasePoint.Z) End Function]
Winkel müssen in Bogenmaß angegeben werden. In Deinem Fall Winkel der Bemaßungslinie + bzw. - 90° (90° enstpr. 1.570796327 in Bogenmaß) Hier Umrechnung Grad / Bogenmaß... 'Konvertiert Winkel von Grad in Bogenmaß. Function WiB(w) WiB = Pi * (w / 180) End Function 'Konvertiert Winkel von Bogenmaß in Grad. Function WiG(w) WiG = (w * 180) / Pi End Function Gruß Werner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|