FastFiber

Lisp voor veeeel layouts

Gestart door H@rm, do 05 01 2012, 19:07:11

Vorige topic - Volgende topic

H@rm

Ik heb een tekening met meer als (of dan) 100 layouts. Ik zoek me eigen een ongeluk om naar de juiste layout te gaan. Nu heb ik daar voor wel iets in gedachten wat waarschijnlijk in LISP is te programmeren (of eventueel in VBA). Met wat try and error zou mij dat zelf ook wel lukken, maar misschien is er iemand die al zo iets heeft of verder nog tips heeft.

De layout namen bestaan allemaal uit enkele cijfers gescheiden door een punt. Het eerste getal voor de punt slaat op het bouw deel, het cijfer achter de punt slaat op de bouwlaag.

Ik wil een zoek sleutel gebruiken op het gedeelte voor of na de punt. Maar om het universeel te houden moet dat geen beperking zijn.
Na het ingeven van de zoeksleutel wil ik een lijst met layouts in een dialoogbox presenteren.
In de dialoogbox wil ik dmv (dubbel)klik een layout selecteren en er dan direct naar toe gaan.
Als ik het commando weer aan roep wil ik dat dezelfde zoeksleutel nog wordt gebruikt en dat mijn huidige layout d.m.v. kleur er uitspringt.

commando's die ik denk te gebruiken zijn:
layout>?
layout>set

Iemand tips, aanwijzingen of een kant en klaar progje??

Al vast bedankt voor het lezen.

Michel
Acad 10 t/m 2015
Revit 2010 t/m 2015
autodidact lisp

roy_043

Misschien heb je hier iets aan:


(defun kg:vl:CollectionToList (coll / result)
  (reverse
    (vlax-for item coll
      (setq result (cons item result))
    )
  )
)

; LayoutNameList bevat de namen van alle layouts in de tekening (incl. "Model")
(setq layoutNameList
  (mapcar
    'vla-get-name
    (kg:vl:CollectionToList
      (vla-get-layouts
        (vla-get-activedocument
          (vlax-get-acad-object)
        )
      )
    )
  )
)

; MatchListExample bevat alle layout namen die voldoen aan "1.*"
(setq matchListExample
  (vl-remove-if-not
    '(lambda (a)
      (wcmatch a "1.*")
    )
    layoutNameList
  )
)

; Ga naar de eerste layout in matchListExample:
(setvar 'ctab (car matchListExample))

H@rm

@Roy_043,

Bedankt voor je reactie.

ff snel getest.
1e deel (defun.. lijkt niets te doen.
2e deel ;layoutnamelist... geeft alle layouts in ee lijstje.
3e deel ;matchlistexample... geeft een selectie. Ik kan daar ook al mee stoeien.
4e deel (setvar ... schakelt naar de eerst uit de lijst.

Dit is een goede start. Nu zal ik nog proberen om de gegevens in een dlc bestandje te drukken zodat het opgeven van de zoeksleutel en het selecteren van de gewenste layout wat makkelijker gaat.

Michel
Acad 10 t/m 2015
Revit 2010 t/m 2015
autodidact lisp

roy_043

Nauwkeuriger match patroon: "1`.*"

(wcmatch "1"  "1.*")  ; => nil
(wcmatch "1." "1.*")  ; => T
(wcmatch "1<" "1.*")  ; => T
(wcmatch "1}" "1.*")  ; => T

(wcmatch "1"  "1`.*") ; => nil
(wcmatch "1." "1`.*") ; => T
(wcmatch "1<" "1`.*") ; => nil
(wcmatch "1}" "1`.*") ; => nil

sschevers

@Roy

(Layoutlist)

Is een standaard lisp commando voor het ophalen van alle layouts (zit model niet in maar kun je wel appenden).

@harm
http://www.cadtutor.net/forum/showthread.php?42431-TabSort-Utility-for-Organising-Layout-Tabs

check bijgaande link eens. Uigebreide tool voor het sorteren van je layouts maar je kunt ook je layout selecteren en current zetten

groeten stephan

roy_043

Citaat van: sschevers op di 10 01 2012, 10:41:37
@Roy

(Layoutlist)

Is een standaard lisp commando voor het ophalen van alle layouts (zit model niet in maar kun je wel appenden).
Dank je wel Stephan, alweer wat geleerd! :vreegoe:

H@rm

@stephan,

Ik zal het morgen eens proberen. Ik heb op voorhand een beetje twijfels dat het progje mijn layouts aanpast. En dat moet NIET gebeuren. Maar wie niet waagt, wie niet wint.
In ieder geval bedankt voor de tip. Ik laat nog van me horen.

Michel
Acad 10 t/m 2015
Revit 2010 t/m 2015
autodidact lisp

john44


Is beetje late reactie ..

ben tijdje niet meer met lisp bezig geweest ..

maar denk voor het snel selecteren van de een layout tab dat deze lisp handig kan zijn. (getest tot in acad 2010)

http://www.jefferypsanders.com/autolisp_LAYOUTS.html


Mvg John 

H@rm

Het is al weer even geleden dat ik hier was,   :oops:


Ik heb het linkje van john44 gedownload en geprobeert. Dat werkt in basis zoals ik het wil. Ik kan op deze mannier wel sneller door mijn layouts wisselen. Maar ik ben nog niet helemaal tevreden. at komt misschien meer door dat ik iets in mn hoofd heb gezet wat niet wil lukken. Dat is een selectie maken van mijn layouts.
Wat al wel wil is in het schermpje gaan staan en het eerste karrakter op geven. Dan ben ik b.v. heel snel bij mijn layouts genummerd 9... .
Met de bijdrage van roy_043 kan ik in mijn schermpje wel een lijst krijgen van miijn gewenste selectie. Dit doe ik door in mijn lisp een zoeksleutel aan te passen.(werkt allen t.b.v. test fase)
De grote vraag waar ik nu mee zit is: hoe kan ik de lijst aanpassen door de opgegeven zoeksleutel vanuit mijn schermpje?
Kan iemand mij een duwtje in de goede richting geven?
Ik ga er vanuit dat ik mijn lijst moet verversen door op de knop "toepassen" te drukken. Of is dat niet nodig?

Al vast hartlijk bedankt voor het meedenken

Michel
Acad 10 t/m 2015
Revit 2010 t/m 2015
autodidact lisp

roy_043

Probeer de bijgevoegde Lisp.

H@rm

@roy_043,

Als je mijn vrouw was kreeg je een dikke zoen.  :vreegoe: :vreegoe: :vreegoe:
Helemaal naar wens.

Michel
Acad 10 t/m 2015
Revit 2010 t/m 2015
autodidact lisp

yoin