Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Bemaßung

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Bemaßung (1346 mal gelesen)
AlexanderRi
Mitglied
Elektroniker


Sehen Sie sich das Profil von AlexanderRi an!   Senden Sie eine Private Message an AlexanderRi  Schreiben Sie einen Gästebucheintrag für AlexanderRi

Beiträge: 20
Registriert: 05.05.2010

erstellt am: 18. Mai. 2010 15:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

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


Sehen Sie sich das Profil von AlexanderRi an!   Senden Sie eine Private Message an AlexanderRi  Schreiben Sie einen Gästebucheintrag für AlexanderRi

Beiträge: 20
Registriert: 05.05.2010

erstellt am: 18. Mai. 2010 22:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

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



Sehen Sie sich das Profil von Wene71 an!   Senden Sie eine Private Message an Wene71  Schreiben Sie einen Gästebucheintrag für Wene71

Beiträge: 28
Registriert: 25.04.2010

Win8.1 Pro x64, ACAD 2015,
VS 2013

erstellt am: 19. Mai. 2010 10:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für AlexanderRi 10 Unities + Antwort hilfreich

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 >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz