gamexia 发表于 2018-10-26 22:55:53

求助!!如何依次获得多边形网格的全部顶点

本帖最后由 gamexia 于 2018-10-26 23:25 编辑

使用edgesurf 生成的多边形网格,如何依次取得全部顶点?





lisperado 发表于 2018-10-27 13:04:06

本帖最后由 lisperado 于 2018-10-27 13:22 编辑

gamexia 发表于 2018-10-27 11:23
首先非常感谢帮助!!
有疑问如下:
1)顶点的编号与CAD的特性中的顶点编号刚好相反

1.相反因为之前 ( setq ls (cons x ls) ) 思路,已更正 :)
2.以下示范只以瞬态点取代替插入块以便直接预览(以免undo费时),思路相同以'p'变量坐标值。。

(defun c:tt2 (/ *error* l i s p )

(defun *error* (msg)
   (princ "*cancel*")
    )
(princ "\n选取多边形网格..")
(cond      ((setq s (ssget "_:E:S+." '((0 . "POLYLINE") (-4 . "&=") (70 . 16)))
               l (vlax-get (vlax-ename->vla-object (ssname s 0)) 'coordinates)
               i 1
               )
         (while      l
         (setq p (list (car l) (cadr l) (caddr l)))                     (setq p (trans p 0 1)) ; UCS坐标只限于瞬态
         (or (zerop (logand i 1))

               ;; (command "-insert" "块名称" p 1 1 0 )
                              (grvecs                         (apply
                        'append
                        (mapcar
                           '(lambda (x)
                              (list 2 p (polar p (* x pi) (* 10. (/ (getvar "viewsize") (cadr (getvar "screensize"))))))
                              )
                           '(0.25 0.75 1.25 1.75)
                           )
                        )
                         )

               )
         (setq i (1+ i)
               l (cdddr l)
               )
         )
         )
      (t (princ "\n退出?"))
      )
(*error* nil)
(princ)
)





lisperado 发表于 2018-10-27 05:05:18

本帖最后由 lisperado 于 2018-10-27 11:47 编辑

(defun c:tt (/ *error* s w i r l)
(defun *error* (msg)
    (if      r
      (close r)
      )
    )
(princ "\n选取多边形网格.." )
(cond      ((setq s (ssget "_:E:S+." '((0 . "POLYLINE") (-4 . "&=") (70 . 16)))
               l (vlax-get (vlax-ename->vla-object (ssname s 0)) 'coordinates)
               i 0
               w (setq w (vl-filename-mktemp))
               r (open w "w")
               )
         (while      l
         (write-line
             (apply 'strcat
                  (vl-list* (itoa i)
                              "\t"
                              (mapcar '(lambda (x) (strcat (rtos x 2 3) "\t")) (list (car l) (cadr l) (caddr l)))
                              )
                  )
             r
             )
         (setq i (1+ i)
               l (cdddr l)
               )
         )
         (close r)
         (startapp "notepad" w)
         )
      (t (princ "\n退出?"))
      )(*error* nil)
(princ)
)


gamexia 发表于 2018-10-27 11:23:59

本帖最后由 gamexia 于 2018-10-27 11:33 编辑

lisperado 发表于 2018-10-27 05:05

首先非常感谢帮助!!
有疑问如下:
1)顶点的编号与CAD的特性中的顶点编号刚好相反

2)不用输出到EXCEL,我是在奇数编号的点的位置插入块(只用到XY二维平面)
页: [1]
查看完整版本: 求助!!如何依次获得多边形网格的全部顶点