FastFiber

hoe deze lisp op te starten

Gestart door silverster, di 15 01 2008, 08:11:17

Vorige topic - Volgende topic

silverster

wat is het commando om deze lisp op te starten?
ik dacht zelf eigenlijk gewoon lengtes dus de macro ^C^C_lengtes

maar dit doet hij dus niet

|;

(vl-load-com)

(defun c:Lengtes (/ oSelectionSet oObjects sLayerName)

(setq vCmd (getvar "cmdecho"))
(setvar "cmdecho" 0)

(setq   oSelectionSet (AGCE:MaakSelectionSet "Lengten");selectieset aanmaken
   sLayerName (vla-get-name (vla-get-ActiveLayer (vla-get-activedocument (vlax-get-acad-object))))
   oObjects (AGCE:AutoSelectLayerObjects oSelectionSet sLayerName);selecteset vullen
   dLengte 0.0   
)
;selectieset doorlopen.
(vlax-for oObject oObjects
  (setq dLengte (+ dLengte (AGCE:LengteVanObject oObject)))
)

(setvar "cmdecho" vCmd)
(prompt (strcat "Totale lengte op de actieve laag " sLayerName " = " (rtos dLengte 2 2) " tekeneenheden."))
(princ)
)

;Lengte van object bepalen.
(defun AGCE:LengteVanObject (oObject / sName)

(setq sName (vla-get-objectname oObject))
(cond ((eq sName "AcDbLine")(vla-get-Length oObject))
       ((eq sName "AcDbArc")(vla-get-ArcLength oObject))
       ((eq sName "AcDbCircle")(vla-get-Circumference oObject))
       ((or (eq sName "AcDbPolyline")(eq sName "AcDbEllipse")(eq sName "AcDbSpline"))
   (VL-CMDF "AREA" "Object" (vlax-vla-object->ename oObject))
   (getvar "perimeter")
       )
)

);end defun

;********************************* UTILS ***************************

(defun AGCE:MaakSelectionSet (sSelectionName / oSelectionSets)
(setq oSelectionSets (vla-get-SelectionSets (vla-get-activedocument (vlax-get-acad-object))))
(if (null (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list oSelectionSets sSelectionName))))
  (vla-Delete (vla-item oSelectionSets sSelectionName))
)
(setq oSelectionSet (vla-add oSelectionSets sSelectionName))
oSelectionSet
);end defun

;subroutine voor selectieset

(defun AGCE:AutoSelectLayerObjects (oSelectionSet sLayer / saType saData lType lData)

(setq saType (vlax-make-safearray vlax-vbInteger (cons 0 0))
       saData (vlax-make-safearray vlax-vbVariant (cons 0 0))
       lType (append lType '(8))
       lData (append lData (list sLayer))
  )
(vlax-safearray-fill saType lType)
(vlax-safearray-fill saData lData)

(vla-Select oSelectionSet acSelectionSetAll nil nil (vlax-make-variant saType)(vlax-make-variant saData))
 
oSelectionSet
);end


silverster

#1
het is me al gelukt ik moest de lisp nog inladen en dat was ik vergeten,

ik heb alleen het idee dat de lisp niet helemaal klopt, ik heb namelijk gezien dat er al een onderwerp over lengtes was en nu heb ik de laatste versie daarvan gepakt en deze in mijn systeem gezet
wanneer ik deze lisp opstart geeft deze de verkeerde waarde's aan

zie de link en dan de onderste

http://www.cadsite.be/smf/index.php/topic,1741.msg9143.html#msg9143

en is het ook mogelijk dat jezelf een selectie aangeeft welke polylijnen deze moet optellen? in plaats van alle lijnen te selecteren in de actieve laag?

JMD

Misschien kun je iets met het bestand uit de bijlage...

Gr JMD

WebRacer

je hebt lengtes en 3Dlengtes van polyline's...
?

Harrie

#4
Citaat van: JMD op di 15 01 2008, 20:54:36
Misschien kun je iets met het bestand uit de bijlage...

Gr JMD

Misschien kun je iets met het bestand uit de bijlage van het laatste
artikel van HofCAD
http://www.cadsite.be/smf/index.php/topic,1741.msg9143.html#msg9143
In Lengtes.lsp heb je de programma's Lengtes en Lengtes2 voor resp.
berekening van lengtes van objecten op actieve laag en berekening van
lengtes van geselecteerde objecten.

Met vriendelijke groet.

yoin