yoin

Baco

Hoi Roy,

Als ik een paar lijnen los in een tekening zet en de lisp laad en draai geeft hij netjes cirkels aan de lijnpunten behalve als deze dus op elkaar aansluiten. Dit is wat ik in markpoint heb neergezet :P:

(defun MarkPoint (point la)
  (setq la (getvar "clayer"))
  (command "-LAYER" "m" "chechpoint" "c" "6" "" "")
  (command "CIRCLE" point "50")
  (setvar "clayer" la)
)


Eddybeerke,

Het volgende boek: "programmeren in autocad13" is hartstikke duidelijk en in het nederlands. Het leren schrijven deed ik in mijn stageperiode dus daar had ik een hele dag de tijd voor. Nu is het meer zoeken wat het betekend wat er geschreven is, en straks dus ook bedenken hoe je iets schrijft zodat autocad doet wat je wilt. Een naslag om codes na te lezen is dan erg practisch . Want nu vraag ik mij bijv. welke codes er bestaan en wat ze dan doen...... :shock:


mvg Bas
Ik zal in het weekend wel kijken waar jouw link mij brengt.

Baco

Citaat van: Baco op di 25 09 2012, 23:00:51
Wie heeft er een suggestie?

Ik heb een isometrisch schema van een waterleidingstelsel met aan elk einde van een lijn een block met attributen. Deze kan ik exporteren en dan in vabi inlezen. Nu moet elke lijn eindigen met een zo'n block of doorgaan met een andere lijn. Als een lijn dus eindigt zonder block of niet begint met een andere lijn eindigt dus mijn waterleidingstelsel. Nu wil ik mbv een lisp routine controleren waar ik eindpunten van lijnen die niet aangesloten zijn met andere lijnen of blocken.

Wie heeft hier iets voor? Zelf dacht ik alle begin- en eindpunten van elke lijn te filteren en P1, P2, P3 etc te noemen. Dan van elk block het insertionpoint te benoemen en vervolgens de coordinaten te vergelijken  en alle coordinaten die 1x voor komen in de lijst te voorzien van een dikke dot.

Maar hoe kan ik een lijst van punten maken van alle lijnen uit een tekening. En idem dito voor alle blocks.

Bij voorbaat bedankt.

roy_043

@ Baco:
Een typisch probleem bij het gebruik van (command) is dat de huidige instelling van OSMODE het resultaat zal beïnvloeden. Als de OSMODE ingesteld staat op uitsluitend midpoint dan zijn de resultaten van jouw (MarkPoint) functie anders dan gewenst. Het is dus verstandig om de OSMODE in de functie tijdelijk op 0 te zetten.

EddyBeerke

Citaat van: Baco op vr 05 10 2012, 20:37:03
Het volgende boek: "programmeren in autocad13" is hartstikke duidelijk en in het nederlands. Het leren schrijven deed ik in mijn stageperiode dus daar had ik een hele dag de tijd voor. Nu is het meer zoeken wat het betekend wat er geschreven is, en straks dus ook bedenken hoe je iets schrijft zodat autocad doet wat je wilt. Een naslag om codes na te lezen is dan erg practisch . Want nu vraag ik mij bijv. welke codes er bestaan en wat ze dan doen...... :shock:

Oke, ik begrijp dat je nu iets weet van AutoLISP, maar je begrijpt weinig van VisualLISP.
Ik het naslagwerk waar ik het over had (http://ubuntuone.com/p/uUb/) gaat juist over VisualLISP!
Het boek waar jij het over hebt stamt uit 1995, toen was er nog GEEN VisualLISP!
Civil3d 2026, Blender 4.x gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

Baco

Hoi Roy,

De eerder geplaatste reactie van gisteren 19:00h had ik niet willen plaatsen maar eigenlijk alleen opgelost in het onderwerp willen plaatsten..... :?. De lisp doet precies wat ik wil en met de osmode op 0 zetten is waar zelf teken ik altijd met osmode op 0 dus dat geeft geen problemen...... Het rare vind ik alleen dat het commando circle op alle plaatsen tegelijk de cirkel plaatst, dit komt nu eigenlijk alleen maar beter uit!

Hoi Eddy,

Ik heb de link (pdf) ook gedownload en moet beginnen met hem te gaan lezen. En inderdaad het is een oud maar makkelijk en overzichtelijk boek. In elk geval bedankt voor de bijdrage!!!! :vreegoe:

gr Bas

roy_043

Citaat van: Baco op ma 08 10 2012, 19:27:00
Het rare vind ik alleen dat het commando circle op alle plaatsen tegelijk de cirkel plaatst, dit komt nu eigenlijk alleen maar beter uit!
Dit lijkt alleen maar zo. De functie (c:CheckWaterLines) bevat een while-lus waarin een lijst met punten wordt gecontroleerd. Voor elk punt dat slechts één keer in de lijst voorkomt wordt de functie (Markpoint) aangeroepen. Deze functie tekent slechts één cirkel op dat punt. Er worden meerdere cirkels getekend omdat (Markpoint) meerdere keren wordt aangeroepen (als meer dan één "fout" punt is).