Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  .net to JIG an Object

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:  .net to JIG an Object (1262 mal gelesen)
fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 28. Okt. 2008 14: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

Im Internet habe ich folgenden Code gefunden

Code:
Imports System
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.GraphicsInterface
Imports Autodesk.AutoCAD.ApplicationServices
'New class derrived from the DrawJig class
Public Class JigExample
    Inherits DrawJig
    Private previousCursorPosition As Point3d
    Private currentCursorPosition As Point3d
    Private entityToDrag As Entity
    Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
    <CommandMethod("GetMyPoint")> _
    Public Sub StartJig()
        'Initialize cursor position
        'Use the geometry library to create a new 3d point object
        previousCursorPosition = New Point3d(0, 0, 0)
        entityToDrag = New Circle(New Point3d(0, 0, 0), New Vector3d(0, 0, 1), 1)
        Application.DocumentManager.MdiActiveDocument.Editor.Drag(Me)
    End Sub

    'You must override this method
    Protected Overloads Overrides Function Sampler(ByVal prompts As JigPrompts) As SamplerStatus
        'Get the current cursor position
        Dim jigOpts As New JigPromptPointOptions()
        jigOpts.UserInputControls = (UserInputControls.Accept3dCoordinates Or UserInputControls.NoZeroResponseAccepted Or UserInputControls.NoNegativeResponseAccepted)
        jigOpts.Message = "" & Chr(10) & "Enter insert point: "
        Dim userFeedback As PromptPointResult = prompts.AcquirePoint(jigOpts)
        currentCursorPosition = userFeedback.Value
        If CursorHasMoved() Then
            'Get the vector of the move
            Dim displacementVector As Vector3d = previousCursorPosition.GetVectorTo(currentCursorPosition)
            entityToDrag.TransformBy(Matrix3d.Displacement(displacementVector))
            'Save the cursor position
            previousCursorPosition = currentCursorPosition
            Return SamplerStatus.OK
        Else
            Return SamplerStatus.NoChange
        End If
    End Function
    Dim JJ As Integer
    'You must override this method
    Protected Overloads Overrides Function WorldDraw(ByVal draw As WorldDraw) As Boolean
        draw.Geometry.Draw(entityToDrag)
        Return True
    End Function

    Private Function CursorHasMoved() As Boolean
        Return Not (currentCursorPosition = previousCursorPosition)
    End Function
End Class


Der funktioniert auch soweit, und so halbwegs verstehe ich das auch
Ich möchte das jedoch auf ein LispBefehl umbauen
(<LispFunction("GetMyPoint")> anstatt <CommandMethod("GetMyPoint")> )
deren Übergabeparameter erstens ein in der Zeichnung existierendes Objekt ist (Elementname/Vlax-Objekt egal), und zweitens der anzuzeigende Text
Rückgabe soll sein der gewählte Punkt oder NIL

Leider habe ich in der .NET Programmierung absolut keine Ahnung. Darum bitte ich Euch um Hilfe.

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


Ex-Mitglied

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

Hi,

wieso verwendest Du nicht einfach (command "_move" ....)?

Die JIG-Technik dient in der Regel der Objektveränderung und/oder Erstellung. So wie ich das Beispiel (überfliegend) interpretiere, macht das aber nichts anderes als '_move' (wenn Du ein bestehendes Objekt übergibst).

Vielleicht gibt es noch Hintergrundinfo, was damit gemacht werden soll + einfacher waere (wenn ich das bearbeiten soll), dass ich das ganze Projekt bekomme (sln, vb, ...) als zip uploaden, dann erspare ich mir (ersparen wir uns) die Projekteinrichtung.

- alfred -

[Diese Nachricht wurde von a.n. am 28. Okt. 2008 editiert.]

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 29. Okt. 2008 11:26    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 erstmals für Deine Bereitschaft.

Ich habe es jetzt selber soweit zusammengebracht.

Natürlich hätte ich es auch mittels (command "._move" ...  machen können. (das ist auch mehr oder wenigher die jetzt funktionierende Version)

Aber in der Endausbaustufe soll das Ding etwas mehr können. Z.B.: je nach überfahrenden bestehenden CAD-Objekt soll sich z.B.: das gejiggte Teil ändern.

Z.B.: ich füge einen Anbautisch ein. Dieser soll am Fadenkreuz hängen. Fahre ich nun über einen passenden Tisch auf der linken Seite, so soll der Anbautisch automatisch ein linker werden und umgekehrt.
die anzuzeigenhden Grafiken werden in einer externen Zeichnung als Blöcke verwaltet.

Ist aber noch ein langer Weg.

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


Ex-Mitglied

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

Hi,

dann hast Du ja noch einiges vor Dir, pass auf, wenn du das Element während des JIG's austauscht, dass du immer aus der Sampler-Schleife rauskommst, denn die Geometrie währenddessen zu tauschen bringt Dir Schwierigkeiten ohne Ende (zumindest hatte ich Crash's, als ich das versuchte). Ich nehme an, das ist auch der Grund, wieso es in .net von Autodesk aus noch keine Applikationsspezifischen Elemente gibt.

Viel Erfolg,

- alfred -

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 29. Okt. 2008 12:48    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

das ganze soll auch noch weiters so funktionieren.

Den einzelnen Möbel sind Anknüpfpunkte zugewiesen (Datenbank)

Haben jetzt das einzufügende Möbel und das bestehende Möbel gleiche Anknüpfpunkte, so soll das einzufügende dabei automatisch hinsnappen. Bewege ich den Vursor jedoch weiter auf einen anderen Tisch, so soll das einzufügende wiederum zum passendden Anknüpfpunkt des neuen Tisches snappen.

So stelle ich mir das vor.

Naja momentan habe ich eh eine funktionierende (allerdings nicht so schöne) Version, und das wäre halt ein richtiges (aber sehr hochgestecktes) Lernobjekt.

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