FastFiber

Entget 2011 vs 2009 (Opgelost)

Gestart door Kenny H, ma 05 09 2011, 20:38:31

Vorige topic - Volgende topic

Kenny H

Beste,

Ik ben zo een programmatje aant maken op mijn pc thuis versie 2008-2009 en hierbij loopt bijgevoegd lispje perfect. een geluk! :)
Maar opt werk draait 2011 en daar krijg ik het maar deels draaiend!!


  (setq p1 (getpoint "\nDuid een eerstepunt aan:"))
  (command "PLINE" p1 "W" "0" "")
  (while
    (setq
      p1 (getpoint p1
   "\nVolgend punt of een <Enter> voor te stoppen:"
)
    )
     (command p1)
  )
  (command "")
  (setq a (entlast))
  (setq contour (entget a))
      (setq positie 0
    start 0
      )
      (repeat (length contour)
(setq x       (nth positie contour)
      positie (+ positie 1)
)
(if (and (= (car x) 39) (= start 0))
  (setq start positie)
)
      )
      (setq pt1 (nth start contour)
    pt2 (nth (+ start 4) contour)
    pt3 (nth (+ start 8) contour)
    pt4 (nth (+ start 12) contour)
    pt5 (nth (+ start 16) contour)
    pt6 (nth (+ start 20) contour)
    pt7 (nth (+ start 24) contour)
    pt8 (nth (+ start 28) contour)
    pt9 (nth (+ start 32) contour)
    pt10 (nth (+ start 36) contour)
    pt11 (nth (+ start 40) contour)
    pt12 (nth (+ start 44) contour)
    pt13 (nth (+ start 48) contour)
    pt14 (nth (+ start 52) contour)
    pt15 (nth (+ start 56) contour)
    pt16 (nth (+ start 60) contour)
      )
      (setq pt1 (list (cadr pt1) (caddr pt1) 0)
    pt2 (list (cadr pt2) (caddr pt2) 0)
    pt3 (list (cadr pt3) (caddr pt3) 0)
    pt4 (list (cadr pt4) (caddr pt4) 0)
    pt5 (list (cadr pt5) (caddr pt5) 0)
    pt6 (list (cadr pt6) (caddr pt6) 0)
    pt7 (list (cadr pt7) (caddr pt7) 0)
    pt8 (list (cadr pt8) (caddr pt8) 0)
    pt9 (list (cadr pt9) (caddr pt9) 0)
    pt10 (list (cadr pt10) (caddr pt10) 0)
    pt11 (list (cadr pt11) (caddr pt11) 0)
    pt12 (list (cadr pt12) (caddr pt12) 0)
    pt13 (list (cadr pt13) (caddr pt13) 0)
    pt14 (list (cadr pt14) (caddr pt14) 0)
    pt15 (list (cadr pt15) (caddr pt15) 0)
    pt16 (list (cadr pt16) (caddr pt16) 0)
      )


Versie 2008:
Als ik dan "Contour" (via watch --> inspect list) bekijk staat er bij puntje 14 het eerste coordinaat en bij 18 het volgende punt etc..

Versie 2011:
Daar krijg ik dit totaal niet!!

Hier vind ik bij A (ook via watch) wel de vertices (zowel 2008 als 2011) wel men puntjes allemaal maar ik weet niet hoe ik die daar kan uitfilteren.  :(

Kan iemand mij hier verder helpen?

Alvast bedankt!!

Kenny
8) Volvo 4 Life 8)

HofCAD

#1
Beste Kenny,

Ik heb nu geen AutoCAD 2011 tot mijn beschikking, maar de punten staat bij mij
in AutoCAD 2010 en AutoCAD 2012 bij 14, 19, 24 en 29 (en niet bij 18).
Ik zie tussen AutoCAD 2010 en AutoCAD 2012 in VLIDE geen verschil. :oops: :oops: :oops:
Als het alleen om de vertices te doen is, dan zou ik zoiets als onderstaand maken:
(defun Vertex (Ent Vert / EntD i Z VertLst)
  (setq EntD (entget Ent))
  (if (= (cdr (assoc 0 EntD)) "LWPOLYLINE")
    (progn
      (setq i  0
    Z  (cdr (assoc 38 EntD))
    VertLst (list '(0 0 0))
      )
      (while (/= (nth i EntD) nil)
(if (= (car (nth i EntD)) 10)
  (setq VertLst
(append VertLst
(list (list 10 (cadr (nth i EntD)) (caddr (nth i EntD)) Z))
)
  )
)
(setq i (1+ i))
      )
      (setq p! (cdr (nth Vert VertLst)))
    )
  )
)
(defun c:test ()
  (setq p1 (getpoint "\nDuid een eerstepunt aan:"))
  (command "PLINE" p1 "W" "0" "")
  (while
    (setq
      p1 (getpoint p1
   "\nVolgend punt of een <Enter> voor te stoppen:"
)
    )
     (command p1)
  )
  (command "")
  (setq Ent (entlast))
  (setq n 1)
  (while (setq pt (Vertex Ent n))
    (princ pt)
    (setq n (1+ n))
  )
  (princ)
)

of
(defun mAssoc (key lst / l)
  (foreach x lst
    (if (= key (car x))
      (setq l (cons (cdr x) l))
    )
  )
  (reverse l)
)
(defun c:test2 ()
  (setq p1 (getpoint "\nDuid een eerstepunt aan:"))
  (command "PLINE" p1 "W" "0" "")
  (while
    (setq
      p1 (getpoint p1
   "\nVolgend punt of een <Enter> voor te stoppen:"
)
    )
     (command p1)
  )
  (command "")
  (setq VertLst (mAssoc 10 (entget (entlast))))
  (setq n 0)
  (repeat (length VertLst)
    (princ (nth n VertLst))
    (setq n (1+ n))
  )
  (princ)
)

of
(defun LstVertex (Ent)
    (mapcar 'cdr (vl-remove-if-not (function (lambda (x) (= 10 (car x)))) (entget Ent)))
)
(defun c:test3 ()
  (setq p1 (getpoint "\nDuid een eerstepunt aan:"))
  (command "PLINE" p1 "W" "0" "")
  (while
    (setq
      p1 (getpoint p1
   "\nVolgend punt of een <Enter> voor te stoppen:"
)
    )
     (command p1)
  )
  (command "")
  (setq VertLst (LstVertex (entlast)))
  (setq n 0)
  (repeat (length VertLst)
    (princ (nth n VertLst))
    (setq n (1+ n))
  )
  (princ)
)

Zie ook GetVert.lsp voor TEST4

Met vriendelijke groet, HofCAD CSI.
ACADcadabra

Kenny H

Beste HofCAD,

Via test3 lukt het mij perfect!  :vreegoe:

Nogmaals bedankt!!

Kenny
8) Volvo 4 Life 8)