Forum:Lisp
Thema:vla-GetPaperSize: auch fuer nicht aktuelle MediaName's?
Möchten Sie sich registrieren?
Wer darf antworten? Registrierte Benutzer können Beiträge verfassen.
Hinweise zur Registrierung Sie müssen registriert sein, um Beiträge oder Antworten auf Beiträge schreiben zu können.
Ihr Benutzername:
Ihr Kennwort:   Kennwort vergessen?
Anhang:    Datei(en) anhängen  <?>   Anhänge verwalten  <?>
Grafik für den Beitrag:                                                
                                                       
Ihre Antwort:

Fachbegriff
URL
Email
Fett
Kursiv
Durchgestr.
Liste
*
Bild
Zitat
Code

*HTML ist AUS
*UBB-Code ist AN
Smilies Legende
Netiquette

10 20 40

Optionen Smilies in diesem Beitrag deaktivieren.
Signatur anfügen: die Sie bei den Voreinstellungen angegeben haben.

Wenn Sie bereits registriert sind, aber Ihr Kennwort vergessen haben, klicken Sie bitte hier.

Bitte drücken Sie nicht mehrfach auf "Antwort speichern".

*Ist HTML- und/oder UBB-Code aktiviert, dann können Sie HTML und/oder UBB Code in Ihrem Beitrag verwenden.

T H E M A     A N S E H E N
joern bosse

Beiträge: 1702 / 6

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

Hallo,
folgendes Problem: ich möchte für alle Papierformate des aktuellen Plotters des aktuellen Layouts die Größen haben.

Mit vla-GetPaperSize kann ich aber nur die Größe des aktuellen Papierformates zurückgeben.

Daher habe ich es mal von hinten durch die Brust ins Auge probiert:
Liste mit Papierformaten durchlaufen
  a. Papierformat aktuell setzen
  b. Rückgabe: PapierformatName + Größe über vla-GetPaperSize

Das geht bei einigen Papierformaten extrem auf die Performance, gibt es eine andere Möglichkeit direkt auf die Größen der verfügbaren Papierformate des aktuellen Plotters zuzugreifen?

Code:

(defun c:test ( / )
  (JBf_Plotter:MediaName:List:WithSize)
  )

;;;GrößenListe anhand der MediaNameList für aktuelles Layout
(defun JBf_Plotter:MediaName:List:WithSize ( /  ACTIVEDOCUMENT CONFIGNAME
                                            CONFIGSIZELIST HEIGTH
                                            LAYOUT MEDIANAME MEDIANAMECURRENT
                                            WIDTH)
 
  (setq MediaNameCurrent (JBf_Plotter:CanonicalMediaName:Get nil))

  (setq ActiveDocument (JBf_Plotter:ActiveDocument)
        layout(JBf_Plotter:Layout ActiveDocument nil))

  (setq ConfigSizeList(mapcar '(lambda(MediaName)
                                (vla-put-CanonicalMediaName layout MediaName)
                                (vla-RefreshPlotDeviceInfo
                                  (vla-get-activelayout ActiveDocument))
                                (vla-GetPaperSize layout 'Width 'Heigth)
                                (list MediaName (list Width Heigth)))
                        (JBf_Plotter:ConfigName:List nil)))

  ;;;alten Namen wieder herstellen
  (vla-put-CanonicalMediaName layout MediaNameCurrent)
  (vla-RefreshPlotDeviceInfo
    (vla-get-activelayout ActiveDocument))
  ConfigSizeList)


;;;ActiveDocument
(defun JBf_Plotter:ActiveDocument ( / ActiveDocument)
  (setq ActiveDocument (vla-get-activedocument (vlax-get-acad-object)))
  (vla-RefreshPlotDeviceInfo
  (vla-get-activelayout ActiveDocument))
  ActiveDocument)

;;;Layout über LayoutName oder Current
(defun JBf_Plotter:Layout (ActiveDocument LayoutName / )
  (if LayoutName
    (vla-item (vla-get-layouts ActiveDocument) LayoutName)
    (vla-get-activelayout ActiveDocument)
    )
  )

;;;Eine Liste mit allen Papierformaten zum aktuellen Layout oder,
;;;wenn Layoutname gesetzt muss es nicht das Aktuelle sein.
;;;wenn kein Plotter gesetzt ist wird grundsätzlich NIL zurückgegeben
(defun JBf_Plotter:ConfigName:List (LayoutName / ACTIVEDOCUMENT LAYOUT)

  (setq ActiveDocument (JBf_Plotter:ActiveDocument)
        layout(JBf_Plotter:Layout ActiveDocument LayoutName))
 
  (vlax-safearray->list
    (vlax-variant-value(vla-GetCanonicalMediaNames layout)))
  )

;;;PapierName aus aktuellem TAB (Model oder Layout) zurückgeben
(defun JBf_Plotter:CanonicalMediaName:Get(LayoutName / ACTIVEDOCUMENT LAYOUT)

  (setq ActiveDocument (JBf_Plotter:ActiveDocument)
        layout(JBf_Plotter:Layout ActiveDocument LayoutName))

  (vla-get-CanonicalMediaName layout)
)



Vor dem testen lieber alles speichern

 

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

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

Orthogonalvermassung Youtube

joern bosse

Beiträge: 1702 / 6

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

Ich will diesen Beitrag nur nochmal nach vorne holen, vielleicht hat ja doch noch irgendwer von Euch eine Idee?!?

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

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

Orthogonalvermassung Youtube