Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  JIG Objekt

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:  JIG Objekt (1833 mal gelesen)
Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

ACAD 2019
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 26. Okt. 2010 16:24    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 an Alle,

ich möchte Blöcke in eine Zeichnung einfügen (mit VB2008 in ACAD2010). Dabei soll eine Voransicht des Blockes an der Maus kleben. Bisher löse ich das mit Sendcommand. Funktioniert, ist aber nicht so schön. Jetzt weiß ich inzwischen schon, daß das Jig-Objekt die Lösung meines Problems wäre. Nun meine Frage: Hat jemand ein kleines einfaches Beispiel für Das JIG-Objekt, damit ich mal nen schnellen Einstieg finden würde.

Danke, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 26. Okt. 2010 16:33    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn Du Dir das ObjectARX-Kit heruntergeladen hast, dann hast Du so ein Beispiel schon in:
samples\dotNet\EllipseJig

Wenn nicht, dann lade Dir das >>>ObjectARX-Kit<<< herunter (registrierungspflichtig, aber kostenlos).

- alfred -

------------------
www.hollaus.at

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

AutoCAD 20xx, Civil 3D 201x, Inventor Prof 201x usw.

erstellt am: 26. Okt. 2010 19:01    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 Theo37 10 Unities + Antwort hilfreich

Hier dann noch ein etwas umfangreicheres Beispiel, bei dem auch Blockreferenzen mit Attributen per jig platziert werden. http://through-the-interface.typepad.com/through_the_interface/2009/03/jigging-an-autocad-block-with-attributes-using-net.html

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 27. Okt. 2010 10:36    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 Alfred,
ich habe mir das Beispiel im Object-ARX Kit mal angesehen.
Aber ich komme mit diesen Dateien "*.cs" nicht zurecht.
Was ist das? Handelt es sich um C++?
Kann ich das Beispiel trotzdem irgendwie verwenden, also nach VB übersetzen?
Danke, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 27. Okt. 2010 11:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

die Extension .cs steht für C# (C-Sharp) und ist das dotNET-basierte C.
Es gibt zum einen im Internet einige Übersetzer-Homepages, die (mit hoher Trefferquote) die Übersetzung von C# auf VB durchführen, diese Codes sind wirklich fast 1:1 verwendbar.

Einen Vortrag über JIG mit VB.NET hätte ich noch >>>hier<<< gefunden.

- alfred -

------------------
www.hollaus.at

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 27. Okt. 2010 15:22    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 Theo37 10 Unities + Antwort hilfreich

noch eine Ergänzung: Falls du dich damit beschäftigst, solltest du dir darüber bewusst sein, dass du mehrere JIG-Geschichten benötigst - eine für jede Eigenschaftsänderung
1) Einfügepunkt
2) Drehung
3) Skalierung

Darüber war ich zuerst gestolpert. Ist aber, wenn man es einmal kapiert hat, recht einfach, das zu bauen. (Limnk zu einem Bsp gabs ja in einem der vorherigen Beiträge)

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

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 28. Okt. 2010 10:07    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 Holger,

genau an dem Thema häng ich gerade. Ich möchte den Block gedreht und skaliert darstellen. Der Block sollte wenn er an der Maus hängt schon einen festen skalierfaktor und Drehung haben. Also nicht wie beim AutoCAD Einfügebefehl, wo diese Dinge nacheinander ablaufen. Wo kann ich die Größe und Drehung des dargestellten Blocks einstellen. Wie gesagt die beiden Größen sollen nicht von der Maus abhängen sondern fest eingestellt werden.
Danke für jeden Tip oder Beispiele.
Bitte bei Beispielen, das unötige weglassen. Mir fällt es manchmal schwer das Schöne von dem Notwendigen zu unterscheiden.
Gruß, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 28. Okt. 2010 10:57    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 Theo37 10 Unities + Antwort hilfreich

Hallo Theo,

du fügst doch eine Blockreferenz ein, bei dieser setzt du direkt nach dem Einfügen die Skalierung und Drehung auf die Werte, die du gern hättest. Genau das Selbe machst du natürlich in dem JIG-Object, damit auch am Mauszeiger die Skalierung bereits passt.

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

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 28. Okt. 2010 14:15    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 und Danke an Alle die bisher geschrieben haben.

Ich bin jetzt schon ziemlich weit gekommen. Aber jetzt habe ich noch ein Problem beidem ich nicht so recht weiter komme.
Ich kann den Block jetzt drehen und auch skalieren.
Schön wäre wenn ich ihn auch noch relativ zum Mauszeiger verschieben könnte. Also er sollte nicht direkt am Fadenkreuz hängen, sondern zum Beispiel 20 Einheiten darunter. Geht das? wenn ja wie?

Sub New(ByVal BlockIns As Point3d, ByVal BlockID As ObjectId)
      MyBase.New(New DatabaseServices.BlockReference(BlockIns, BlockID))
        myBRef = Me.Entity
        myBRef.Rotation = 1 -dreht mal ein bischen-
        myBRef.ScaleFactors = New Geometry.Scale3d(3, 1, 1) -skaliert mal ein bischen-
    End Sub

Gruß, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 28. Okt. 2010 15:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn Du im Sampler den Punkt einfach um Y um -20 hinunterrechnest?

- alfred -

------------------
www.hollaus.at

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 28. Okt. 2010 15:56    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 Alfred,

ich hab meinen Sampler mal abgeändert wie unten:


Protected Overrides Function Sampler(ByVal prompts As JigPrompts) _
        As SamplerStatus
        Dim myPPR As PromptPointResult
        Dim newpoint As Point3d
        myPPR = prompts.AcquirePoint(myOpts)
        Dim curPos As Point3d
        curPos = myPPR.Value
        If curPos.IsEqualTo(BasePt) Then
            Return SamplerStatus.NoChange
        Else
            newpoint = New Geometry.Point3d(myPPR.Value.X + 100, myPPR.Value.Y - 20, myPPR.Value.Z) -diese Zeile ist neu--
            myMatrix = Geometry.Matrix3d.Displacement( _
                BasePt.GetVectorTo(newpoint))
            BasePt = myPPR.Value
            Return SamplerStatus.OK
        End If
    End Function

Es ändert sich an der Anzeige leider gar nichts.
Welchen Punkt(in welcher Zeile) muß ich ändern?
Danke, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 28. Okt. 2010 16:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

kannst Du die ganze Solution zur Verfügung stellen, das rundherum ist nicht gerade gut vorstellbar mit diesem Code-Schnippsel.

- alfred -

------------------
www.hollaus.at

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 28. Okt. 2010 16:20    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

Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD
Public Class AU_BlockJig
    Inherits Autodesk.AutoCAD.EditorInput.EntityJig
    Dim BasePt As Point3d = New Point3d(0, 0, 0)
    Dim myMatrix As Matrix3d
    Dim myBRef As DatabaseServices.BlockReference
    Dim myOpts As EditorInput.JigPromptPointOptions

    Sub New(ByVal BlockIns As Point3d, ByVal BlockID As ObjectId)
        MyBase.New(New DatabaseServices.BlockReference(BlockIns, BlockID))
        myBRef = Me.Entity
        myBRef.Rotation = 1
        myBRef.ScaleFactors = New Geometry.Scale3d(3, 1, 1)
    End Sub

    Function BeginJig() As PromptPointResult
        If myOpts Is Nothing Then
            myOpts = New EditorInput.JigPromptPointOptions()
            myOpts.Message = vbCrLf & "Select a point:"
            myOpts.Cursor = EditorInput.CursorType.Crosshair
            myOpts.UseBasePoint = False
        End If

        Dim ed As EditorInput.Editor = _
            Application.DocumentManager.MdiActiveDocument.Editor
        Dim myPR As PromptResult
        myPR = ed.Drag(Me)
        Do
            Select Case myPR.Status
                Case EditorInput.PromptStatus.OK
                    Return myPR
                    Exit Do
                Case EditorInput.PromptStatus.None
                    Return myPR
                    Exit Do
                Case EditorInput.PromptStatus.Other
                    Return myPR
                    Exit Do
            End Select
        Loop While myPR.Status <> EditorInput.PromptStatus.Cancel
        Return Nothing
    End Function
    Protected Overrides Function Sampler(ByVal prompts As JigPrompts) _
        As SamplerStatus
        Dim myPPR As PromptPointResult
        Dim newpoint As Point3d
        myPPR = prompts.AcquirePoint(myOpts)
        Dim curPos As Point3d
        curPos = myPPR.Value
        If curPos.IsEqualTo(BasePt) Then
            Return SamplerStatus.NoChange
        Else
            newpoint = New Geometry.Point3d(myPPR.Value.X + 100, myPPR.Value.Y - 20, myPPR.Value.Z)
            myMatrix = Geometry.Matrix3d.Displacement( _
                BasePt.GetVectorTo(newpoint))
            BasePt = myPPR.Value
            Return SamplerStatus.OK
        End If
    End Function

    Protected Overrides Function Update() As Boolean
        myBRef.Position = BasePt
        Return False
    End Function

End Class

Hi Alfred,
das ist die ganze Klasse. Das ist natürlich Alles nur geklaut(kopiert)
von Jerry Winters, (AutoDesk)
Gruß, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 28. Okt. 2010 22:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

ich glaube, da ist was beim Abkupfern passiert. 
Mal meine Variante aus Deinem Code, gesplittet in zwei Teile:
a) die Initialisierung, die eine Blockreference erzeugt, dieses der JIG-Instanz übergibt und dann im Modellbereich einfügt
b) die JIG-Klasse (ja, so klein kann sie sein )

HTH, - alfred -

PS: Auf Fehlerprüfungen, auf Blockdefinitions-Existenz wurde hier aus Gründen der Übersichtlichkeit verzichtet

Code:
Public Shared Sub CADde_Start(ByRef AcadDoc As ApplicationServices.Document)
  Dim tBlockName As String = "MeinBlock"  'hier bitte Dein Blockname
  Dim tDocLock As ApplicationServices.DocumentLock = AcadDoc.LockDocument
  Dim tTrAct As DatabaseServices.Transaction = AcadDoc.TransactionManager.StartTransaction
    Try
      Dim tPickedPnt() As Double = New Double() {0, 0, 0}
      Dim tBlTb As DatabaseServices.BlockTable = CType(tTrAct.GetObject(AcadDoc.Database.BlockTableId, DatabaseServices.OpenMode.ForRead, False), DatabaseServices.BlockTable)
      Dim tModSp As DatabaseServices.BlockTableRecord = CType(tTrAct.GetObject(tBlTb("*MODEL_SPACE"), DatabaseServices.OpenMode.ForWrite, False), DatabaseServices.BlockTableRecord)

      Dim tBlDef As DatabaseServices.BlockTableRecord = CType(tTrAct.GetObject(tBlTb(tBlockName), DatabaseServices.OpenMode.ForWrite, False), DatabaseServices.BlockTableRecord)

      'hier erzeugen wir uns mal eine BlockReference und bestimmen Drehung und Skalierung
      Dim tBlRef As DatabaseServices.BlockReference = New DatabaseServices.BlockReference(Geometry.Point3d.Origin, tBlDef.ObjectId)
      tBlRef.Rotation = 1
      tBlRef.ScaleFactors = New Geometry.Scale3d(3, 1, 1)

      'jetzt erzeugen wir daraus eine JIG-Instanz, der wir dann die Kontrolle übergeben (an die Maus)
      Dim tJig As CADde_BlockJig = New CADde_BlockJig(Geometry.Point3d.Origin, tBlRef)
      Dim tPntRes As EditorInput.PromptPointResult = CType(AcadDoc.Editor.Drag(tJig), EditorInput.PromptPointResult)
      If tPntRes.Status = PromptStatus.OK Then
        'und ist nicht abgebrochen worden, dann setzen wir den Block jetzt in den Modellbereich
        tBlRef.Position = tJig.getTransformedInsPnt(tPntRes.Value)
        tModSp.AppendEntity(tBlRef)
        tTrAct.AddNewlyCreatedDBObject(tBlRef, True)
        tTrAct.Commit()
      Else
        'ist JIG abgebrochen worden, dann entledigen wir uns hier der Überreste
        tBlRef.Dispose()
      End If
    Catch ex As Exception
      'TODO Fehlermeldung
    Finally
      If tTrAct IsNot Nothing Then tTrAct.Dispose() : tTrAct = Nothing
      If tDocLock IsNot Nothing Then tDocLock.Dispose() : tDocLock = Nothing
    End Try
End Sub


Public Class CADde_BlockJig
  Inherits Autodesk.AutoCAD.EditorInput.EntityJig
  Dim BasePt As Point3d = New Point3d(0, 0, 0)

  Sub New(ByVal BlockRef As DatabaseServices.BlockReference)
    MyBase.New(BlockRef)
  End Sub

  Protected Overrides Function Sampler(ByVal prompts As JigPrompts) As SamplerStatus
    Dim myPPR As PromptPointResult = prompts.AcquirePoint("Punkt zeigen: ")
    Dim curPos As Point3d = myPPR.Value
    If curPos.IsEqualTo(BasePt) Then  'hier würde sich anbieten, eine Toleranz einzubauen, sonst könnte es flimmern
      Return SamplerStatus.NoChange
    Else
      BasePt = curPos
      Return SamplerStatus.OK
    End If
  End Function

  Protected Overrides Function Update() As Boolean
    CType(MyBase.Entity, DatabaseServices.BlockReference).Position = getTransformedInsPnt(BasePt)
  End Function

  Public Function getTransformedInsPnt(ByVal BasePt As Geometry.Point3d) As Geometry.Point3d
    'hier ermitteln wir den Blockeinfügepunkt, abgeleitet aus Mausposition und Versatz in Y-Richtung
    Return New Geometry.Point3d(BasePt.X, BasePt.Y - 20, BasePt.Z)
  End Function
End Class



------------------
www.hollaus.at

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

erstellt am: 29. Okt. 2010 12:21    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

Danke, jetzt läuft es.
Ist einn interesantes Thema, was die Makros sehr professionel erscheinen läßt. Da werd ich noch mehr mit machen.
Gruß, Theo

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theo37
Mitglied
Techniker


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

Beiträge: 423
Registriert: 08.10.2008

ACAD 2019
WIN 7 64bit
Intel Xenon CPU E5-1620 3.60GHz
16GB RAM

erstellt am: 15. Nov. 2010 16:05    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

Ein Problemchen habe ich noch gefunden. Wofür es aber bestimmt eine einfache Lösung gibt. Mir ist aufgefallen, daß in einer Zeichnung in der der Layer Null ausgeschalten ist, die Jig-Linien nicht dargestellt werden. Kann es sein daß diese Jig-Objekte grundsätzlich auf Layer Null dargestellt werden? jetzt könnte ich den Layer Null einfach einschalten, will ich aber nicht unbedingt. Könnte ich meine Jig-Linien nicht auch irgendwie auf den aktuellen Layer darstellen?
Danke für jeden Tipp. Unten ein bischen Code, wie ich die Linien erzeuge. Gruß, Theo

Protected Overrides Function WorldDraw(ByVal draw As Autodesk.AutoCAD.GraphicsInterface.WorldDraw) As Boolean
        Dim LinksUnten As Point3d
        Dim LinksOben As Point3d
        Dim RechtsOben As Point3d
        Dim Länge As Double
        Dim Pot As Integer
        Dim Erg As Double
        If ThisDrawing.GetVariable("orthomode") = 0 Then
            For Pot = -4 To 4
                Erg = 10 ^ Pot
                If Dist > Erg Then Länge = Erg
                If Dist > Erg * 2 Then Länge = Erg * 2
                If Dist > Erg * 5 Then Länge = Erg * 5
            Next Pot
            Länge = Länge * 1.8
        Else : Länge = Dist
        End If
        LinksUnten = New Point3d(Start.X - Länge, Start.Y, Start.Z)
        Länge = Länge * 0.4444
        LinksOben = New Point3d(LinksUnten.X, Start.Y + Länge, Start.Z)
        RechtsOben = New Point3d(Start.X, Start.Y + Länge, Start.Z)
        jigLine = New Line(Start, LinksUnten)
        jigLine2 = New Line(LinksOben, LinksUnten)
        jigLine3 = New Line(LinksOben, RechtsOben)
        jigLine4 = New Line(RechtsOben, Start)
        jigLine.ColorIndex = 7
        jigLine2.ColorIndex = 7
        jigLine3.ColorIndex = 7
        jigLine4.ColorIndex = 7

        draw.Geometry.Draw(jigLine)
        draw.Geometry.Draw(jigLine2)
        draw.Geometry.Draw(jigLine3)
        draw.Geometry.Draw(jigLine4)
    End Function

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP


Ex-Mitglied

erstellt am: 16. Nov. 2010 00:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

wenn Du mein Beispiel nochmals ansiehst, dann brauch ich WorldDraw nicht, ich erstelle zuerst die Geometrie und die Position der Geometrie aktualisiere ich dann in der überschriebenen Function Update.

Und Deine Aussage ist wie folgt zu korrigieren: ist der aktive Layer (nicht unbedingt der Layer '0') ausgeschaltet, dann siehst Du das/die JIG-Element/e nicht. Ich hätte jetzt auch probiert, vor dem Einstieg in das JIG-Handling der Blockreference einen anderen (bestehenden und eingeschalteten) Layer mitzugeben. Dann sehe ich auch die BlockRef beim ziehen.

Gleiches wird auch 1:1 mit Deinen Linien funktionieren, wenn Du statt dessen eine Polylinie machst (bei Bedarf nach dem JIG in die Einzelteile zerlegst).

HTH, - alfred -

------------------
www.hollaus.at

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