Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  INSBASE Model-Layout

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:  INSBASE Model-Layout (1630 mal gelesen)
joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 11. Jun. 2014 15:43    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

Ich hatte ja gerade fast dasselbe Thema:
http://ww3.cad.de/foren/ubb/Forum145/HTML/004121.shtml

Jetzt habe ich noch ein Problem: Ich möchte beim Öffnen einer Zeichnung auch gleich die Variable "INSBASE" auf ungleich (0 0 0) prüfen, aber bezogen auf den Modelbereich.

Mit folgenden Zeilen:

Code:

(vlax-safearray->list
  (vlax-variant-value
    (vla-getvariable
      (vla-get-activedocument(vlax-get-acad-object))
      "INSBASE")))

Jetzt war mir aber nicht ganz bewußt, das INSBASE separat für "Model" und für jedes Layout gespeichert wird. Bei meiner Prüfung interessiert mich aber wiederum nur das "Model".

Wenn jetzt ein Zeichnung geöffnet wird, bei der ein Layout aktiv ist, dann bekomme ich mit den oben genannten Zeilen einen falschen Wert.

Frage: Kann ich die Einstellung INSBASE für das "Model" auch aus dem aktivem Layout heraus abfragen, oder muß ich erst den Bereich wechseln???

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Orthogonalvermassung Youtube

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 12. Jun. 2014 08:14    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 joern bosse 10 Unities + Antwort hilfreich

Wenn du das schon festgestellt hast, hast du doch sicher auch schon vla-get-modelspace zur Abfrage der Variable benutzt, oder?

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 12. Jun. 2014 08: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 Nur für joern bosse 10 Unities + Antwort hilfreich

Wahrscheinlich wird dir nichts Anderes übrig bleiben als alle Layouts zu aktivieren und die Insbase dann zu setzen, oder abzufragen

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 12. Jun. 2014 08:49    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 joern bosse 10 Unities + Antwort hilfreich

Ich kann dir leider nicht wirklich helfen (nach dem ich keine Lösung kenne habe ich gegoogelt und noch immer keine Lösung gefunden).

Das einzige was helfen könnte ist der Weg den du selbst im anderen Thread gehst: XREF
(Acad kann über Umwege zirkuläre Referenzen erstellen, habe es zwar mit Lisp noch nie getestet.. aber das ist ja auch wirklich mehr als nur Dirty    )

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 12. Jun. 2014 09:19    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 danke Euch beiden für Eure Gedanken. Ich mache es jetzt doch mit mit dem Umschalten in den Modelbereich und dann erfolgt die Abfrage. Damit ist für mich das Thema jetzt erledigt.

Code:

(if(=(getvar "TILEMODE")0)
    (progn
      (setq LayoutAlt (getvar "CTAB"))
      (setvar "CTAB" "Model")))

;;;dann die Prüfung und wenn LayoutAlt, wieder ins vorher aktuelle ;;;Layout zurückschalten


------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Orthogonalvermassung Youtube

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 12. Jun. 2014 09: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 joern bosse 10 Unities + Antwort hilfreich

Hinweis: setze doch mal in den Layouts irgendwelche "krummen" INSBASE-Werte, die du dir merkst. Speicher dann als dxf .... öffne die dann im Texteditor und suche nach den Werten. Da hast du dann schon mal einen Anhaltspunkt, wo du dann Lispmäßig ansetzen musst...
IMHO der GC 12 des Layouts :

(defun LAYOUT_GET_DATEN ( / LAYOUTS LAYOUT_EINTRAG LAYOUT_LISTE LAYOUT)
  (setq LAYOUTS (entget (cdr (assoc 350                                         
    (member '(3 . "ACAD_LAYOUT")    
      (entget (namedobjdict))                               
    )
  ))))                                                     
 
  (while (>(length LAYOUTS) 0)                                 
    (setq LAYOUTS (member (cons 3 (cdr (assoc 3 LAYOUTS))) LAYOUTS ))
    (if (and (=(type (cdr(assoc 350 LAYOUTS))) 'ENAME)
    (= (cdr(assoc 0 (entget (cdr(assoc 350 LAYOUTS))))) "LAYOUT"))
      (progn                                                       
        (setq LAYOUT_EINTRAG (entget (cdr(assoc 350 LAYOUTS))))
        (setq LAYOUT_LISTE (append LAYOUT_LISTE
      (list (list (cdr(assoc  71 LAYOUT_EINTRAG))
  (cdr(assoc  3 LAYOUTS))
                          (cdr(assoc  12 LAYOUT_EINTRAG))
            )
              )
              )                   
        )
      )     
    )
    (setq LAYOUTS (cddr LAYOUTS))
  )   
  LAYOUT_LISTE
)

Hilft dir zwar wegen nicht activx bei deinem ursprünglichen Problem nicht weiter, aber nunja

evtl. noch das:

(defun getmodelinsbase (DOC / L P)
  (or(and(=(type DOC)'vla-object)(vlax-property-available-p DOC 'activelayout))
    (setq DOC(vla-get-activedocument(vlax-get-acad-object)))
  ) 
  (setq L(vla-get-activelayout DOC))
  (vla-put-activelayout DOC (vla-item(vla-get-layouts DOC) "Model"))
  (setq P(vlax-safearray->list(vlax-variant-value(vla-getvariable DOC "INSBASE"))))
  (vla-put-activelayout DOC L)
  P
)

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 12. Jun. 2014 09:42    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 Thomas,
danke für die Tipps, vielleicht komme ich noch drauf zurück, jetzt ist wie immer erstmal was anderes wieder wichtig. Ich habe jedenfalls bemerkt, wie wenig ich mit INSBASE bisher beschäftigt habe.

Eine Tücke bei der Prüfung habe ich eben noch festgestellt: wenn ein BKS aktiv ist gibt die Variable andere Werte aus, als die ich eigentlich wissen wollte.

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Orthogonalvermassung Youtube

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 12. Jun. 2014 11:14    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 joern bosse 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von joern bosse:
Hallo Thomas,
danke für die Tipps, vielleicht komme ich noch drauf zurück, jetzt ist wie immer erstmal was anderes wieder wichtig. Ich habe jedenfalls bemerkt, wie wenig ich mit INSBASE bisher beschäftigt habe.

Ich hab' mich damit auch nur in dem Zusammenhang befasst, als Anwender versehentlich absurde Werte dafür gespeichert hatten und sich dann wunderten, dass sie Blöcke aus ihrer Blockbibliothek nicht richtig einfügen konnten.

Ganz ehrlich: ich kapiere nicht, welchen Sinn diese Variable haben soll. Außer den natürlich, die Anwender zu verwirren und Support-Requests zu generieren.

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 12. Jun. 2014 12:49    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 joern bosse 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von joern bosse:
Eine Tücke bei der Prüfung habe ich eben noch festgestellt:
wenn ein BKS aktiv ist gibt die Variable andere Werte aus, als die ich eigentlich wissen wollte.


Da kann aber niemand etwas dafür    Das Insbase BKS-Werte speichert ist ja dokumentiert.

Zitat:
Original erstellt von archtools:
Ganz ehrlich: ich kapiere nicht, welchen Sinn diese Variable haben soll.
Außer den natürlich, die Anwender zu verwirren und Support-Requests zu generieren.

Technisch ist es dir ja klar was die Variable macht, dann nehmen wir doch einfach etwas Phantasie hinzu um einen möglichen sinnvollen Anwendungsfall zu überlegen:

Block: Kompletter Unsinn, da fällt mir einfach nichts ein dazu.
XREF:  Einfacher Weg um den Basispunkt zu verschieben (man braucht dabei keine Layer oder "gc60 Dinge" zu beachten.
    Denn Layerstand speichern, alles "ein", verschieben, alten Layerstand wiederherstellen - das ist schon viel Arbeit (jedes Mal wenn eine neue Version kommt)
    Früher gab es nicht mal "Layerstand speichern/wiederherstellen)

Was die Praxis angeht, so gebe ich dir aber wie fast immer 100%ig recht. Ich habe auch nur mal überlegt wie es zur Entstehung gekommen sein könnte 

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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