CADsite forum

AutoCAD => Autolisp => Topic gestart door: H@rm op do 05 01 2012, 19:07:11

Titel: Lisp voor veeeel layouts
Bericht door: H@rm op do 05 01 2012, 19:07:11
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
Titel: Re: Lisp voor veeeel layouts
Bericht door: roy_043 op vr 06 01 2012, 12:14:02
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))
Titel: Re: Lisp voor veeeel layouts
Bericht door: H@rm op vr 06 01 2012, 13:26:09
@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
Titel: Re: Lisp voor veeeel layouts
Bericht door: roy_043 op za 07 01 2012, 11:39:09
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
Titel: Re: Lisp voor veeeel layouts
Bericht door: 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).

@harm
http://www.cadtutor.net/forum/showthread.php?42431-TabSort-Utility-for-Organising-Layout-Tabs (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
Titel: Re: Lisp voor veeeel layouts
Bericht door: roy_043 op di 10 01 2012, 17:28:58
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:
Titel: Re: Lisp voor veeeel layouts
Bericht door: H@rm op di 10 01 2012, 20:14:27
@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
Titel: Re: Lisp voor veeeel layouts
Bericht door: john44 op wo 14 03 2012, 12:58:15

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 
Titel: Re: Lisp voor veeeel layouts
Bericht door: H@rm op vr 16 03 2012, 14:07:06
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
Titel: Re: Lisp voor veeeel layouts
Bericht door: roy_043 op ma 19 03 2012, 10:24:16
Probeer de bijgevoegde Lisp.
Titel: Re: Lisp voor veeeel layouts (opgelost)
Bericht door: H@rm op ma 19 03 2012, 10:34:16
@roy_043,

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

Michel