abc
  Zoeken op: Alle woorden Een van deze woorden Complete zin
if dutch is abacadabra for you ... Klik om deze pagina te verversen
Inhoud verversen
Hoofdmenu

Tip: u kunt de tekst vergroten en verkleinen door met de Ctrl-toets ingedrukt aan uw muiswieltje te draaien.
Hoofdmenu

Algemene informatie over AutoLISP.

AutoLISP - universele programmeertaal voor AutoCAD, GstarCAD, BricsCAD, etc.!

Betekent AutoLISP voor u "AutoCAD List Processing" of "Automatically Lost In Stupid Parentheses"?

Of wel: gaat u met de programmeertaal van AutoCAD het tekenwerk nog verder automatiseren of verdwaald raken in die stomme haakjes? Dit zijn vragen waarmee managers van CAD-projecten vroeg of laat geconfronteerd zullen worden als het tekenwerk gebaseerd is op AutoCAD of GstarCAD. Iets anders geformuleerd: verdien ik er wat mee als ik mijn mensen een AutoLISP-training laat volgen of begin ik een kostbaar avontuur?

Kosten:
  • drie dagen uit productie voor de training
  • kosten van de training
  • uit productie tijdens programmeerwerk
  • kans op extra salaris-eisen
Baten:
  • minder routine-matige handelingen
  • minder foutenbronnen
  • verhoogde productie door handige hulpmiddelen
  • meer concentratie op de inhoud van het tekenwerk
  • meer motivatie bij de CAD-gebruikers
  • betere kwaliteit van het tekenwerk
  • meer uniformiteit in het tekenwerk

De moeilijkheid bij de kosten-baten-analyse is, zoals zo vaak, het voorspellen van de te verwachten baten. De kosten zijn meestal vrij eenvoudig vast te stellen. Belangrijk is daarom een zeer goed inzicht te verkrijgen in de manier waarop de tekeningen tot stand komen en wat er met de informatie op deze tekeningen gebeurt. Wordt deze informatie later weer uitgetrokken en in een andere vorm gezet, zoals zaaglijsten, knipstaten, begrotingen, uitslagentekeningen, presentatietekenigen, etc.? Evenzo moet gelet worden op de vooraf aanwezige informatie, hoe deze beschikbaar komt en de manier waarop deze verwerkt wordt in de tekeningen. Vaak worden bij het tot stand komen van de tekeningen meetgegevens, tabellen, normen, standaarden en rekenresultaten gebruikt die mogelijk al in digitale vorm zijn opgeslagen.

Het resultaat is een "intelligente" tekening, waarbij een lijn niet meer als los element wordt gezien, maar als een onderdeel van een groter geheel met een functie. Een isometrisch leidingschema bijvoorbeeld, bestond vroeger uit simpele lijnen, terwijl nu met wat hulpmiddelen, waaronder AutoLISP, van elke lijn bekend is dat het een stuk leiding voorstelt met eigen diameter en materiaalsoort. Daardoor kan heel snel een overzicht gemaakt worden van de gebruikte materialen en de daaruit volgende kosten.

Met een gedegen kennis van de mogelijkheden van AutoCAD is een gedeelte van de functionele informatie in de tekening te verwerken. Een groot aantal zaken zal zonder AutoLISP slechts zeer omslachtig of niet op te lossen zijn, zoals het automatisch genereren van vormen uit reken- of meetgegevens of het automatiseren van conditionele routinehandelingen.


Waarom niet alles met VBA?
Leren programmeren met Visual Basic for Applications (VBA) is voor velen gemakkelijker, dan met AutoLISP, maar bepaalde programma's zijn in VBA veel meer werk om te maken, omdat je vast zit aan de objectstructuur (bij hoeveelhedenbepaling is dat juist erg handig). Bij AutoLISP kunt u programmeren in de volgorde waarin u de functies ook al tekenend zou gebruiken. Daarnaast is AutoLISP universeler (het zit standaard in vrijwel alle AutoCAD-varianten) en vraagt het minder geheugen.

Is er veel interactie met de gebruiker nodig, dan kunt u beter kiezen voor VBA. Het programmeren van dialoogmenu‘s in AutoLISP kan wel (de DCL-techniek), maar is erg omslachtig.

Meer over VBA.
Nieuws rond AutoLISP.


Programma voor het bewerken van AutoLISP-bestanden
21/4/20 Het gratis programma TotalEdit Pro moet u echt even uitproberen als u wel eens een lisproutine bewerkt. Dit is zo krachtig dat GstarCAD heeft besloten om geen aparte programmeeromgeving voor lisp te maken.


Tool voor het bepalen van oppervlakten
2/6/10 In de video GstarCAD met Areasum kunt u zien hoe eenvoudig het is om met behulp van GstarCAD en een paar regels AutoLISP de oppervlaktes uit een AutoCAD-tekening te halen en te totaliseren. Behalve oppervlakten bepalen met het programma Areasum, ziet u hoe we overstekende lijnen snel afknippen en arceringen maken en bewerken.

De onderstaande LISP-code mag vrij worden gebruikt, maar laat u wel onze naam in de copyrightregel staan, want: ere wie ere toekomt. Alvast bedankt!

;AREASUM.LSP
(prompt "\nAREASUM, (c)2010, IDEOMA intelligent systems bv.")
(prompt "\nCalculates the total area of selected Light Weight Polylines.")
(defun c:areasum ()
 (setvar "cmdecho" 0)
 (prompt "\nSelect Light Weight Polylines")
 (setq
  ss (ssget (list '(0 . "LWPOLYLINE")))
  ssl (if ss (sslength ss) 0)
  n 0
  ar 0.0
 )
 (repeat ssl
  (setq
   en (ssname ss n)
   n (1+ n)
  )
  (command "area" "e" en)
  (setq
   a (getvar "area")
   ar (+ ar a)
  )
  (command "text" (cdr(assoc 10 (entget en))) (fix(/ (cadr(getvar "screensize")) 50)) "" (rtos a))
 )
 (prompt(strcat "\n" (itoa n) " polylines found. Total Area: " (rtos ar)))
 (princ)
)
(prompt "\nCommand AREASUM added.")(princ)

Links uitlijnen
13/7/09 Ongelofelijk eigenlijk, dat 20 jaar na de komst van AutoCAD er voor het links uitlijnen nog steeds geen standaardfunctie is! Het onderstaande programma lijnt de geselecteerde objecten uit op het meest linkse. Het werkt in AutoCAD, GstarCAD en alle andere AutoCAD-varianten die AutoLISP ondersteunen. Als u GstarCAD aanschaft bij IDEOMA, dan krijgt u deze handige functie er gewoon gratis bij, inclusief menu om de functie snel te laden en op te roepen.

De onderstaande LISP-code mag vrij worden gebruikt, maar laat u wel onze naam in de copyrightregel staan, want: ere wie ere toekomt. Alvast bedankt!

;ialign.lsp
(prompt "\nIntelligent Align, (c)2009, IDEOMA intelligent systems bv.")
(prompt "\nAligns the selected objects.")
(defun c:ialign()
 (setq
  ss (ssget)
  ssl (if ss (sslength ss) 0)
  n -1
 )
 (repeat ssl
  (setq
   n (1+ n)
   en (ssname ss n)
   el (entget en)
   x (cadr(assoc 10 el))
   xmin (if (= n 0) x
         (if (>= x xmin) xmin x)
        )
  )
 )
 (setq n -1)
 (repeat ssl
  (setq
   n (1+ n)
   en (ssname ss n)
   el (entget en)
   et (cdr(assoc 0 el))
   as10 (assoc 10 el)
   as10nw (list 10 xmin (nth 2 as10) (nth 3 as10))
   elnw (subst as10nw as10 el)
  )
  (entmod elnw)
 )
 (princ)
)
(prompt "\nOpdracht IALIGN toegevoegd.")(princ)


AutoLISP in AutoCAD LT
1/8/08 In principe is AutoCAD LT, de lichte versie van AutoCAD, niet geschikt voor 3D werk en AutoLISP. Echter, met LT Toolkit Max uit Australi� lukt dat wel. U krijgt er meteen een verzameling handige tools bij. Meer informatie over LT Toolkit vindt u op DrcAuto.

Bibliotheken opschonen
22/7/08 U kunt een handig AutoLISP-programma gratis downloaden van onze pagina over bibliotheken. Met het programma "Clean" kunt u snel grote blokkenbibliotheken opschonen. Het programma is onbeschermd, dus u kunt er gemakkelijk uw eigen variant van maken. Natuurlijk ondersteunen we u daar graag bij.


Hoe universeel is AutoLISP ?
22/7/08 AutoLISP-programma‘s waarin niet al te bijzondere dingen gebeuren, werken ongewijzigd in AutoCAD, GstarCAD en BricsCAD. Microstation heeft een andere macrotaal en AutoCAD LT en AutoSketch ondersteunen geen AutoLISP. AutoCAD LT is eventueel nog uit te breiden met software die het mogelijk maakt om AutoLISP-programma‘s te draaien, maar we raden u aan om in dat geval eens goed naar GstarCAD te kijken.

Hoe moeilijk is AutoLISP ?
26/7/07 Een AutoLISP-programma begint met een haakje openen, waarna bij elke functie in het programma opnieuw haakjes geopend worden en later weer gesloten. Het programma eindigt zodra er evenveel haakjes gesloten worden als er eerder geopend zijn. Een klein voorbeeld:

(defun c:rechthoek () ;definieer een AutoLISP-functie:
 (setq ;geef variabelen een waarde:
  p1 (getpoint "Geef een hoekpunt van de rechthoek: ")
  p2 (getcorner p1 "Geef het andere hoekpunt: ")
  x1 (car p1) ;haal x-coord. uit p1
  x2 (car p2)
  y1 (cadr p1) ;haal y-coord. uit p1
  y2 (cadr p2)
  x3 (/ (+ x1 x2) 2) ;midden tussen x1 en x2
  y3 (/ (+ y1 y2) 2)
  dx (- x1 x2) ;verschil x1 x2
  dy (- y1 y2)
  opp (abs (* dx dy)) ;absolute product van dx en dy
 ) ;einde setq
 (command ;geef opdrachten aan AutoCAD of GstarCAD:
  "pline" ;polyline tekenen
  p1 ;1e punt
  (list x1 y2) ;2e punt
  p2 ;3e punt
  (list x2 y1) ;4e punt
  "close" ;terug naar 1e punt
  "text" "middle" ;plaats tekstmidden op ...
  (list x3 y3) ;het midden van de rechthoek
  "" "" ;sla 2 AutoCAD-vragen over
  (rtos opp) ;oppervlak omzetten in tekst
 ) ;einde command
) ;einde defun


Dit AutoLISP-programma voegt aan AutoCAD een nieuwe opdracht toe, waarmee een rechthoek getekend kan worden door twee hoekpunten op te geven. Tevens wordt het oppervlak van de rechthoek bepaald en als tekst in het midden van de rechthoek geplaatst.

Hoe slim is AutoLISP?
Dat AutoLISP een heel efficiente en slimme taal is moge blijken uit het feit dat een sprong-opdracht zoals "GOTO" in de taal niet voorkomt. Het sluit de verleiding tot het maken van de beruchte spagetti-programmatuur geheel uit. Verder voorziet de taal in een aantal functies waaruit het typische List Processing blijkt. Bijvoorbeeld het bepalen van het middelpunt p3 en het oppervlak in het bovenstaande programma kan ook direct vanuit variabelen p1 en p2:

  p3 (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p2)
  opp (apply '* (mapcar '(lambda (a b) (abs (- a b))) p1 p2))


bv:
p1 = (24 100)
p2 = (48 0)

geven als resultaat:

p3 = (36 50)
opp = 2400

p1 en p2 zijn lijsten van ieder 2 getallen (x- en y-coordinaten). Met de functie LAMBDA wordt een bewerking gedefinieerd die door de functie MAPCAR wordt toegepast op de getallen in de lijsten p1 en p2. De functie APPLY past de functie "*" (bepaal het product) toe op de getallen uit de lijst die het resultaat is van de functie MAPCAR. Waar de eerste programmeerwijze alleen geldt voor 2-D situaties, kan deze opzet ook gebruikt worden in een situatie waarbij p1 en p2 lijsten van 3 getallen zijn (x,y,z). Het getal in de variabele OPP stelt dan het volume van een 3D blok voor.

bv:
p1 = (24 100 200)
p2 = (48 0 220)

geven als resultaat:

p3 = (36 50 210)
opp = 48000

AutoLISP-tip
Vooral bij meer komplexe programma's met if-structuren, loops en andere geneste functies, wordt het lastig om een vergeten haakje op te sporen. Daarvoor is echter een aardige ongedocumenteerde truuk: schrijf het AutoLISP- programma tijdens de ontwikkelingsfase in een Script-file. Als je deze script-file laat afdraaien verschijnt op het scherm voor elke regel het aantal haakjes wat op dat moment open staat, bv. 1> of 2>. Heb je je bij het programmeren netjes gehouden aan het inspringen bij elke AutoLISP-functie, dan wordt snel zichtbaar waar een haakje teveel of te weinig staat.


Onze gegevens en het laatste nieuws vindt u via het hoofdmenu
Uw reactie wordt zeer op prijs gesteld. Zegt het voort!

Klik voor onze Facebook-pagina Om te voorkomen dat uw surfgedrag op onze website kan worden gevolgd door derde partijen, zoals Facebook, hebben wij alle actieve links e.d. verwijderd, m.u.v. Statcounter. U kunt natuurlijk nog wel onze Facebook-pagina bezoeken.
Meer informatie?
Wilt u meer informatie, een offerte of een webdemo? Vul dan hier uw gegevens in. We sturen dan per email de gevraagde informatie of geven u enkele datums voor een webdemo.

Sinds maandag 2 juli 2007 zijn op ideoma.nl pagina‘s bekeken. Bekijk hier de statistieken

Open uw PDF!
Stop printen, krassen, scannen - maak uw PDF-aantekeningen meteen digitaal!

Open uw DWG!
Bespaar fors op uw CAD-licentiekosten met Open DWG software!



Probeer GstarCAD eens ... © Copyright 1992-2022, IDEOMA intelligent systems bv