Ik heb zo'n vermoeden.
Probeer eens die twee punten met princ naar de commandolijn te brengen. Als je precision dan 0.00(etc.. ) staat in gesteld zal je waarschijnlijk merken dan ze toch niet helemaal gelijk zijn. Je zou dan een "if" moeten gebruiken waarbij vergeleken wordt of de twee getallen bijna aan elkaar gelijk zijn.
Bvb één manier is om een deling te doen (/ (CDR PT1) 1.00) als je acuraat wilt tot 2 cijfers na de komma.
Een ander is om te kijken of PT1 tussen (PT4 - 0.01) en (PT4 +0.01) ligt.
Waarschijnlijk zijn er nog manieren maar deze twee ken ik.
PetPerm
Bedankt voor je reactie.
Ik weet nog niet of jouw oplossing werkt, dat ga ik straks testen. Wel weet ik nog een manier om getallen af te ronden op hele getallen. Dit zou ook een mogelijke oplossing kunnen zijn. Dit doe je door 'fix' ervoor te zetten.
Dus: (fix 567.012345) maakt 567. 'fix' rondt altijd af naar beneden voor zover ik weet.
Dus: (fix 567.9385) maakt ook 567. :)
Maar ik zal eerst jouw oplossing testen.
Ik weet niet wat je verder met de punten moet doen.
Maar persoonlijk vind ik dat je doe oplossing beter kan zoeken in een nauwkeurigere tekening
dan door te gaan smokkelen
Ik heb een test gedaan waarbij ik een list heb gemaakt van pt1 en pt4 die exact gelijk aan elkaar waren.
De x-waarden van deze lists zijn volgens de IF functie niet gelijk aan elkaar.
---> Als ik de waarden als getallen in variabelen plaats, dan werkt de IF functie ineens wel weer goed. <--- Klopt niet
---EDIT---
De laatste zin is fout!!! De IF functie werkt bij mij nooit goed met variabelen. Ik moet echt numerieke waarden invullen waarover ik een IF functie op wil uitvoeren.
Heeft iemand enig idee hoe dat kan?
Dit is de routine. Wat ik graag wil dat de code doet heb ik erachter gezet.
(defun c:ha (/ pt1 pt2 pt3 pt4 pt5) ;Ik wil een gesloten figuur tekenen die (zodra het figuur gesloten is) meteen gearceerd wordt via hatch.
(command "._pline"
(setq pt1 (getpoint "\nFirst corner: ")) ;--> Ik wil hier een onbepaald aantal punten definiëren voor het figuur, ik weet
(setq pt2 (getpoint "\nSecond corner: ")) ;nog niet hoe ik AutoCAD een onbepaald aantal punten kan laten genereren.
(setq pt3 (getpoint "\nThird corner: "))
(setq pt4 (getpoint "\nFourth corner: "))
(IF (= pt1 pt4) ;Pas bij een vierde punt kun je voor het eerst een gesloten figuur maken, ik wil dat de IF functie controleert of pt1
"c" ;exact gelijk is aan pt2
(setq pt5 (getpoint "\nFifth corner: "));Zoniet dan moet er een 5e punt komen. Zoja, dan tekent AutoCAD de polyline over deze punten
);De code moet dus eigenlijk nog zo worden dat ik een oneindig aantal punten kan invoeren
)
(setq a (entlast))
(command "-hatch" "p" "u" 45 15 "n" "s" a "" "");Hier wil ik de gesloten polyline arceren via hatch
)
De roodgekleurde 'if' functie is altijd onwaar bij mij.
Bedankt voor de reacties zover. Ik hoop dat jullie me verder kunnen helpen.
Groeten, Lars
Bedankt HofCAD, hier heb ik echt wat aan.
Jij bent heel erg goed met LISP of niet?
Je had een opmerking dat AutoLISP niet hetzelfde is als VisualLISP, weet je zo wat het verschil precies is?
Groeten,
Lars
Citaat van: zone2000 op do 15 05 2008, 14:36:16
Bedankt HofCAD, hier heb ik echt wat aan.
Jij bent heel erg goed met LISP of niet?
Je had een opmerking dat AutoLISP niet hetzelfde is als VisualLISP, weet je zo wat het verschil precies is?
Groeten,
Lars
Beste Lars,
In de artikels van http://www.cadsite.be/smf/index.php/topic,2560.0.html
staan geen functies, die beginnen met vl-, vlax-, vla- of vlr-.
VisualLisp is een uitbreiding op AutoLisp, wat toegepast kan worden sinds AutoCAD
release 14 en volledig geïmplementeerd is sinds AutoCAD 2000.
Men onderscheidt in VisualLisp de volgende functies:
vl- Generic extensions to AutoLISP
vlax- Generic ActiveX functions
(vlax-get, vlax-put, vlax-invoke are from old VitalLisp)
vla- AutoCAD-specific ActiveX properties and methods
vlr- Visual LISP reactor related functions
Je zou kunnen zeggen dat VisualLisp objectgeoriënteerd is, en de mogelijkheid
van ActiveX geeft.
VisualLisp werkt alleen na gebruik van de functie (vl-load-com) om o.a.
de ActiveX support mogelijk te maken.
This function first checks if ActiveX support is already loaded; if so, the function does nothing.
If ActiveX support is not already loaded, vl-load-com loads ActiveX and other Visual LISP extensions
to the AutoLISP language.
Zie het artikel: http://www.dailyautocad.com/autolisp/difference-between-autolisp-and-visuallisp/
en http://www.dailyautocad.com/autocad/114/
Zie ook: http://www.mattworland.com/Tools/Customization/Lisp/lisp.htm
In onderstaande artikelen kun je zien hoe een probleem met AutoLISP
en met VisualLisp opgelost kan worden.
http://www.cadsite.be/smf/index.php/topic,767.0.html
Zie het verschil in de programma’s TABSTR2LST en STR2LST,
en kijk tevens naar de snelheidsverschillen.
http://www.cadsite.be/smf/index.php/topic,1199.0.html
Zie het verschil in de programma's AttDefLst1 en AttDefLst2
Voor een AutoLisp studie bekijk de volgende sites:
1) http://www.midpointcad.com/au/docs/lakose_The_Visual_LISP_Developers_Bible.pdf
2) http://www.afralisp.net/
3) http://www.autolisp-tutorial.mapcar.net/
voor de 3 tutorials: Tutorial AutoLisp, Advanced AutoLisp en ActiveX AutoLisp.
4) http://ronleigh.info/autolisp/index.htm
5) http://www.asmitools.com/Files/AutoLISP_Help/AutoLISP%20Help.html
6) http://www.cadwest.com.au/Files/AutoCAD/AutoCAD%20Visual%20Lisp%20Commands.pdf
7) http://www.scribd.com/doc/52450758/72/How-to-Use-ObjectDBX-within-Visual-LISP
Zie ook het verschil van een AutoLisp-entiteit en een VisualLisp-object
met het programma INFO.
(defun C:info ( / ent)
(vl-load-com)
(setq ent (entsel))
(textpage)
(princ "\nDit is vanuit de AutoLisp-entiteit:\n")
(print (entget (car ent)))
(princ "\n\nDit is vanuit het VisualLisp-object:\n\n")
(print (vlax-dump-object (vlax-Ename->Vla-Object (car ent)) T))
(princ)
);defun
Bij een AutoLisp-entiteit van een lijn krijgt men zoiets als:
((-1 . <Entity name: 7efa06f0>) (0 . "LINE") (330 . <Entity name: 7ef9ecf8>) (5
. "216") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbLine") (10 2044.12 522.911 0.0) (11 2075.65 555.079 0.0) (210 0.0 0.0 1.0))
en bij een VisualLisp-object van dezelfde lijn zoiets als:
; IAcadLine: AutoCAD Line Interface
; Property values:
; Angle (RO) = 0.795366
; Application (RO) = #<VLA-OBJECT IAcadApplication 00d74d3c>
; Delta (RO) = (31.5338 32.1687 0.0)
; Document (RO) = #<VLA-OBJECT IAcadDocument 0185f6e8>
; EndPoint = (2075.65 555.079 0.0)
; Handle (RO) = "216"
; HasExtensionDictionary (RO) = 0
; Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 07d30fc4>
; Layer = "0"
; Length (RO) = 45.0467
; Linetype = "ByLayer"
; LinetypeScale = 1.0
; Lineweight = -1
; Material = "ByLayer"
; Normal = (0.0 0.0 1.0)
; ObjectID (RO) = 2130314992
; ObjectName (RO) = "AcDbLine"
; OwnerID (RO) = 2130308344
; PlotStyleName = "ByLayer"
; StartPoint = (2044.12 522.911 0.0)
; Thickness = 0.0
; TrueColor = #<VLA-OBJECT IAcadAcCmColor 07d306f0>
; Visible = -1
; Methods supported:
; ArrayPolar (3)
; ArrayRectangular (6)
; Copy ()
; Delete ()
; GetBoundingBox (2)
; GetExtensionDictionary ()
; GetXData (3)
; Highlight (1)
; IntersectWith (2)
; Mirror (2)
; Mirror3D (3)
; Move (2)
; Offset (1)
; Rotate (2)
; Rotate3D (3)
; ScaleEntity (2)
; SetXData (2)
; TransformBy (1)
; Update ()
Met vriendelijke groet, HofCAD CSI
PS
1) Op de vraag of ik erg goed in LISP ben:
Indien je een blonde haarkleur zoals ik heb,
moet je gewoon veel geluk bij het programmeren hebben.
2) Lars in http://www.cadsite.be/smf/index.php/topic,2562.msg13210.html#msg13210
heb ik de programma's HPL1, HPL2 en HPL3 toegevoegd.
3) Op 04/06-2008 is http://ronleigh.info/autolisp/index.htm toegevoegd.
4) Zie ook de 14 tutorials van Dave Pitzer
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2309147
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2309176
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2309212
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2309242
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2309269
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2309353
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2309466
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2312293
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2312315
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2312345
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2312382
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2312545
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2312562
http://usa.autodesk.com/adsk/servlet/item?siteID=123112&id=2312702
5) http://www.cadsite.be/smf/index.php/topic,2913.msg14970.html#msg14970
6) http://www.caddsoftsolutions.com/AutoLISP-VisualLISP-DCL-Books.htm
7) http://www.theswamp.org/index.php?topic=37014.0