Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Problem ActiveUcs

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
  
NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
Autor Thema:  Problem ActiveUcs (1286 mal gelesen)
c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 29. Apr. 2008 21:04    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

Problem mit dem Programm bei Adt2006

Gibt X und Y-Achse des Bks sind nicht im Lot????

Mfg Chris

Sub Example_ActiveUCS()
    ' This example returns the current saved UCS (or saves a new one dynamically)
    ' and then sets a new UCS.
    ' Finally, it returns the UCS to the previous setting.
   
    Dim newUCS As AcadUCS
    Dim currUCS As AcadUCS
    Dim origin(0 To 2) As Double
    Dim xAxis(0 To 2) As Double
    Dim yAxis(0 To 2) As Double
   
    ' Get the current saved UCS of the active document. If the current UCS is
    ' not saved, then add a new UCS to the UserCoordinateSystems collection
    If ThisDrawing.GetVariable("UCSNAME") = "" Then
        ' Current UCS is not saved so get the data and save it
        With ThisDrawing
            Set currUCS = .UserCoordinateSystems.Add( _
                            .GetVariable("UCSORG"), _
                            .Utility.TranslateCoordinates(.GetVariable("UCSXDIR"), acUCS, acWorld, 0), _
                            .Utility.TranslateCoordinates(.GetVariable("UCSYDIR"), acUCS, acWorld, 0), _
                            "OriginalUCS")
        End With
    Else
        Set currUCS = ThisDrawing.ActiveUCS  'current UCS is saved
    End If
   
    MsgBox "The current UCS is " & currUCS.name, vbInformation, "ActiveUCS Example"
   
    ' Create a UCS and make it current
    origin(0) = 0: origin(1) = 0: origin(2) = 0
    xAxis(0) = 1: xAxis(1) = 1: xAxis(2) = 0
    yAxis(0) = -1: yAxis(1) = 1: yAxis(2) = 0
    Set newUCS = ThisDrawing.UserCoordinateSystems.Add(origin, xAxis, yAxis, "TestUCS")
    ThisDrawing.ActiveUCS = newUCS
    MsgBox "The new UCS is " & newUCS.name, vbInformation, "ActiveUCS Example"
   
    ' Reset the UCS to its previous setting
    ThisDrawing.ActiveUCS = currUCS
    MsgBox "The UCS is reset to " & currUCS.name, vbInformation, "ActiveUCS Example"
End Sub

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 29. Apr. 2008 21:08    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 c.schojer 10 Unities + Antwort hilfreich

Hi Chris,

Was willst du uns damit sagen?! Bekommst du bei dem Beispiel eine Fehlermeldung?! Ich kenne so einen Fehler nur, wenn uns Homag Zeichnungen von neuen Maschinen / Maschinenplänen schickt, die mit Catia erstellt wurden.

Gruß, Carsten

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

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 29. Apr. 2008 21:45    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

Nein ist ein ganz normales Autocad file wo ich ucs auf ein Objekt gemacht habe wenn ich diesen Befehl dann ausführe bekomme ich den erwähnten Fehler...

Hmm wenn ich das gesamte File Exportiere paßts
Wie kann ich das Aktuelle UCS abspeichern? ohne Fehler?
und wieder laden?
Mfg Chris

[Diese Nachricht wurde von c.schojer am 29. Apr. 2008 editiert.]

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

Huebi
Mitglied
Vermessungsing.


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

Beiträge: 107
Registriert: 08.01.2004

Intel Core Duo E6750@2.66GHz
NVIDIA GeForce 8600 GT
AutoCAD 2004, 2007, 2008
AcadMAP 2004 und 2007
Civil 3D 2008
ADT 2009

erstellt am: 02. Mai. 2008 10:55    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 c.schojer 10 Unities + Antwort hilfreich

Hallo beinander,

auf dieses Problem bin ich auch schon gestoßen. Der Beispielscode funktioniert nicht richtig, wenn man ein unbenanntes BKS aktiviert hat (z.B. das BKS nach einem Objekt ausgedreht und dieses dann eben nicht gespeichert hat).

Mein Work-Around sieht dann folgendermaßen aus:
ThisDrawing.SendCommand ("BKS" & vbCr & "SP" & vbCr & "originalUCS" & vbCr & "j" & vbCr)

Das ist allerdings wenig elegant... aber es wirkt!

Liebe Grüße aus München
Hübi

P.S. Weiß eigentlich jemand von Euch, warum meine uralte System-Info immer wieder angezeigt wird, obwohl ich diese in meinem Profil längst geändert habe?

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

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



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

Beiträge: 2855
Registriert: 02.05.2006

AutoCAD LandDesktop R2 bis 2004
Civil 3D 2005 - 2025
Plateia, Canalis
Visual Basic

erstellt am: 02. Mai. 2008 11: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 Nur für c.schojer 10 Unities + Antwort hilfreich

Hallo Hübi,

darüber habe ich mich auch schon gewundert, bis ich vor einigen Wochen einen Threat las, der darauf hinwies, dass die Sysinfo brettabhämgig sind.

D.h. wenn Du in einem Forum Deinen ersten Beitrag / Antwort schreibst, wird die SysInfo vom Profil übernommen und dort hinterlegt. Anschließend wird diese SysInfo verwendet.

Willst Du diese ändern kannst Du das beim Verfassen eines neuen Beitrages machen. Siehe auch hier

Grüße,
Klaus

[Diese Nachricht wurde von KlaK am 02. Mai. 2008 editiert.]

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

Huebi
Mitglied
Vermessungsing.


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

Beiträge: 107
Registriert: 08.01.2004

Intel Core Duo E6750@2.66GHz
NVIDIA GeForce 8600 GT
AutoCAD 2004, 2007, 2008
AcadMAP 2004 und 2007
Civil 3D 2008
ADT 2009

erstellt am: 02. Mai. 2008 13:27    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 c.schojer 10 Unities + Antwort hilfreich

Hallo Klaus,

herzlichen Dank für die Info ;o)

Kapiert hab ich's zwar noch nicht, warum die Systeminfo brettabhängig sein soll... aber ich hab's zur Kenntnis genommen *g*

Mal sehen, ob sich die Einstellungen mit diesem Posting ändern *g*

Grüße aus München
Hübi

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 02. Mai. 2008 20: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 Nur für c.schojer 10 Unities + Antwort hilfreich

Hi Chris,

Ich kann dein Problem zwar nicht nachvollziehen. Aber ein UCS kannst du ja so erstellen:

Code:
Set ucsObj = ThisDrawing.UserCoordinateSystems.Add(origin, xAxisPoint, yAxisPoint, "TestUCS")

Wobei du dir den Wert für origin aus der Systemvariable UCSORG holen kannst. Die X- und Y-Vectoren kannst du über die Systemvariablen UCSXDIR und UCSYDIR holen. Damit bist du dann auch nicht auf das ActiveUCS-Object angewiesen.

Gruß, Carsten

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

Huebi
Mitglied
Vermessungsing.


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

Beiträge: 107
Registriert: 08.01.2004

Intel Core Duo E6750@2.66GHz
NVIDIA GeForce 8600 GT
AutoCAD 2004, 2007, 2008
AcadMAP 2004 und 2007
Civil 3D 2008
ADT 2009

erstellt am: 05. Mai. 2008 07: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 Nur für c.schojer 10 Unities + Antwort hilfreich

Hallo Carsten,

probier's doch mal aus - irgendwo in dem Beispielcode (...oder im VBA?) ist ein Bug.
Zeichne z.B. eine Linie von 0,0 nach 1,2 und drehe das BKS danach aus (BKS - Objekt) ohne dieses dann zu speichern.
Dann geh mal den Beispielcode aus der VBA-Hilfe, den Chris angegeben hat, durch. Eigentlich sollte das BKS unter dem Namen "OriginalUCS" gespeichert und dann wieder hergestellt werden, aber das, was dabei rauskommt entspricht nicht dem originalen BKS - leider.

Mich würde es auch brennend interessieren, woran das liegt!

Grüße, Hübi

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

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 05. Mai. 2008 13: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

@Huebi genau so ist es!
es geht einfach nicht!!
Und ich habe keine Ahnung wieso es nicht geht...

Mfg Chris

[Diese Nachricht wurde von c.schojer am 05. Mai. 2008 editiert.]

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 05. Mai. 2008 13: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 c.schojer 10 Unities + Antwort hilfreich

Hi,

Jetzt hab ich das Problem erkannt.

Ich denke, der Fehler liegt darin, das bei den Viewdirections (UCSXDIR und UCSYDIR) die Koordinaten von dem Ursprung(UCSORG) aus berechnet werden müssen und nicht als absolute Werte genutzt werden können.
Dann sollte es auch funktionieren.

Gruß, Carsten

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

Huebi
Mitglied
Vermessungsing.


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

Beiträge: 107
Registriert: 08.01.2004

Intel Core Duo E6750@2.66GHz
NVIDIA GeForce 8600 GT
AutoCAD 2004, 2007, 2008
AcadMAP 2004 und 2007
Civil 3D 2008
ADT 2009

erstellt am: 05. Mai. 2008 15:02    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 c.schojer 10 Unities + Antwort hilfreich

Hallo Chris und Carsten,

die Viewdirections (UCSXDIR und UCSYDIR) liegen auf dem Einheitskreis und zeigen eigentlich nur den Winkel der Achsen an - und das im WKS.

Was mich schon immer wunderte ist, dass die Directions in diesem Beispiel mit der Methode "TranslateCoordinates" nochmals umgewandelt werden. Dies ist meiner Meinung nach eigentlich nicht notwendig.

Ändert man den Code allerdings so ab:

Set currUCS = .UserCoordinateSystems.Add( _
                            .GetVariable("UCSORG"), _
                            .GetVariable("UCSXDIR"), _
                            .GetVariable("UCSYDIR"), _
                            "OriginalUCS")

erscheint (nicht immer) die Fehlermeldung:

"X-Achse und Y-Achse des BKS sind nicht im Lot"

Irgendwo ist da der Wurm drin *g*...nur wo?

Grüße vom Hübi

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 05. Mai. 2008 15:12    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 c.schojer 10 Unities + Antwort hilfreich

Hi Huebi,

Du musst die X- und Y-Vectoren vom Origin (Einfüge / Nullpunkt des BKS) aus für das neue BKS angeben. Das heißt, das du die Vectoren berechnen musst und nicht einfach die Werte nehmen kannst, die du über die Variablen zurück bekommst.

Gruß, Carsten

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

Huebi
Mitglied
Vermessungsing.


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

Beiträge: 107
Registriert: 08.01.2004

Intel Core Duo E6750@2.66GHz
NVIDIA GeForce 8600 GT
AutoCAD 2004, 2007, 2008
AcadMAP 2004 und 2007
Civil 3D 2008
ADT 2009

erstellt am: 08. Mai. 2008 16:29    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 c.schojer 10 Unities + Antwort hilfreich

Okeeee, Okeeee, Du hast ja recht Carsten *g*

Ich hab's mal ausprobiert und so funktioniert's tadellos!


Sub SaveCurrentUCS ()

Dim currUCS As AcadUCS
Dim UCSName As String

UCSName = ThisDrawing.GetVariable("UCSNAME")
If InStr(UCSName, "*") <> 0 Then UCSName = ""
   
If UCSName = "" Then
  Dim Origin As Variant
  Dim xAxis As Variant
  Dim yAxis As Variant
 
  With ThisDrawing
    Origin = .GetVariable("UCSORG")
    xAxis = .GetVariable("UCSXDIR")
    yAxis = .GetVariable("UCSYDIR")
  End With
   
  xAxis(0) = Origin(0) + xAxis(0)
  xAxis(1) = Origin(1) + xAxis(1)
  xAxis(2) = Origin(2) + xAxis(2)
  yAxis(0) = Origin(0) + yAxis(0)
  yAxis(1) = Origin(1) + yAxis(1)
  yAxis(2) = Origin(2) + yAxis(2)
  Set currUCS = ThisDrawing.UserCoordinateSystems.Add(Origin, xAxis, yAxis, "OriginalUCS")
Else
  Set currUCS = ThisDrawing.ActiveUCS  'aktuelles BKS ist bereits gespeichert
End If

End Sub

10Us sind unterwegs 

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

c.schojer
Mitglied



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

Beiträge: 299
Registriert: 23.05.2007

Autocad 2018

erstellt am: 08. Mai. 2008 19: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

Aha vielen Dank werds mal ausprobieren!
Mfg Chris

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)2025 CAD.de | Impressum | Datenschutz