明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: wangyue

[求助]請問自動產生多邊形網面(AcDbPolygonMesh)各個頂點坐標的清單

  [复制链接]
发表于 2004-2-7 10:54:00 | 显示全部楼层
你最好把需求再说详细点,我给你写个比较完整点的程序吧
 楼主| 发表于 2004-2-7 14:24:00 | 显示全部楼层
1.將綱面的頂點按:第一行1,3,5。。。這樣抓出,第二行2,4,6,這樣抓出


將坐標存到TXT中,


2.在一個指令,就是將這些點一個一個讀到AUTOCAD中,產生網面


3.在產生的網面頂點上生成一個半徑為2的圓 
发表于 2004-2-7 15:02:00 | 显示全部楼层
做网架呢? 一般做网架都有专门的软件。


另外,加载也可以这样:拷贝程序部分,在cad命令行中paste。就可以执行(getver (car(entsel)))
发表于 2004-2-7 19:22:00 | 显示全部楼层
用之前说的方法加载程序,然后使用命令:mesh

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2004-2-9 09:07:00 | 显示全部楼层
meflying and 无痕 真是太謝謝你們了,現在測試,如有擬問還請多多指教,
 楼主| 发表于 2004-2-9 19:59:00 | 显示全部楼层
不好意思,請問如何是產生出坐標點的值小數點後是8位而不是4位
发表于 2004-2-10 08:32:00 | 显示全部楼层
  1. ;函数:Sel
  2. ;功能:类似于(entsel)函数,带提示,且带一个过滤表,只选择表中类型
  3. ;参数:  _types  过滤列表,对象类型字符串列表  msg:  提示语,字符串
  4. ;样例:(sel '("LINE" "LWPOLYLINE") "选择直线...")
  5. (defun Sel (_types msg / gr ent m ty)
  6.    (defun com(ty tylst / i rVal)
  7.        (setq i 0)
  8.        (while (< i (length tylst))
  9.            (if (= ty (nth i tylst))
  10.   (progn (setq rVal t) (setq i (length tylst)))
  11.            )
  12.            (setq i (1+ i))
  13.        )
  14.        rVal
  15.    )
  16.    (prompt msg)
  17.    (setq m nil)
  18.    (while (not m)
  19.        (setq gr (grread 2 4 2))
  20.        (cond
  21.            ((= (car gr) 3)
  22.              (setq ent (ssget (cadr gr)))
  23.              (if (not (and ent (com (cdr (assoc 0 (entget (setq ent (ssname   ent 0))))) _types)))
  24.    
  25.    (setq ent nil)
  26.              )
  27.              (setq m t)
  28.            )
  29.            ((= (car gr) 25) (setq m t))
  30.        )
  31.    )
  32.    (princ "\n")
  33.    (if ent (list ent (cadr gr)) nil)
  34. )(defun wl-print-to-string (lst / dz lst2)
  35.    (if (= lst "\n")
  36.        (setq lst2 "\n")
  37.        (progn
  38.            (setq dz (getvar "dimzin"))
  39.            (setvar "dimzin" 1)
  40.            (setq lst2 (vl-princ-to-string (mapcar '(lambda (e) (mapcar 'rtos e '(2 2 2) '(8 8 8))) lst)))
  41.            (setvar "dimzin" dz)
  42.        )
  43.    )
  44.    lst2
  45. )(defun GetVer( / pts ents ent m n pts2 pts3 pts_l i)
  46.    (setq ent (car (sel '("POLYLINE") "选择多面网格...")))
  47.    (setq ents (entget ent))
  48.    (setq m (cdr (assoc 71 ents)))
  49.    (setq n (cdr (assoc 72 ents)))
  50.    (while (/= (cdr (assoc 0 (setq ents (entget (setq ent (entnext ent)))))) "SEQEND")
  51.        (setq pts (append pts (list (cdr (assoc 10 ents)))))
  52.    )
  53.    (setq i 0)
  54.    (setq pts3 nil)
  55.    (while (< i (length pts))
  56.        (setq pts2 nil)
  57.        (repeat n
  58.            (setq pts2 (append pts2 (list (nth i pts))))
  59.            (setq i (1+ i))
  60.        )
  61.        (setq pts3 (append pts3 (list pts2)))
  62.    )
  63.    (if (< (cadar pts) (cadr (last pts)))
  64.        (setq pts (reverse pts))
  65.    )
  66.    pts3
  67. )   (defun OutTxt( / pts i pt_lst fname f)
  68.    (setq pts (Getver))
  69.    (setq i 0)
  70.    (setq fname (getfiled "选择输出文件" "" "txt" 1))
  71.    (if fname
  72.        (progn
  73.            (setq pt_lst nil)
  74.            (repeat (+ (/ (length pts) 2) 1)
  75.   (setq pt_lst (append pt_lst (list (nth (* 2 i) pts) "\n")))
  76.   (setq i (1+ i))
  77.            )
  78.            (setq f (open fname "w"))
  79.            (Write-line (apply 'strcat (mapcar 'wl-print-to-string pt_lst)) f)
  80.            (setq pt_lst nil
  81.          i 0)
  82.            (repeat (/ (length pts) 2)
  83.   (setq pt_lst (append pt_lst (list (nth (+ (* 2 i) 1) pts) "\n")))
  84.   (setq i (1+ i))
  85.            )
  86.            (Write-line (apply 'strcat (mapcar 'wl-print-to-string pt_lst)) f)
  87.            (close f)
  88.        )
  89.    )
  90.    (princ)
  91. )(defun ReadTxt( / fname f pts1 pts2 pts i m ptstr)
  92.    (setq fname (getfiled "选择输出文件" "" "txt" 0))
  93.    (if fname
  94.        (progn
  95.            (setq f (open fname "r"))
  96.            (while (/= (setq ptstr (read-line f)) "")
  97.   (setq pts1 (append pts1 (list (read ptstr))))
  98.            )
  99.            (while (and (setq ptstr (read-line f)) (/= ptstr ""))
  100.   (setq pts2 (append pts2 (list (read ptstr))))
  101.            )
  102.            (setq m (+ (length pts1) (length pts2)))
  103.            (setq i 0)
  104.            (repeat (length pts1)
  105.   (setq pts (append pts (list (nth i pts1))))
  106.   (if (nth i pts2)
  107.      (setq pts (append pts (list (nth i pts2))))
  108.   )
  109.   (setq i (1+ i))
  110.            )
  111.            (close f)
  112.            (list (apply 'append pts) m)
  113.        )
  114.    )
  115. )(defun MakeMesh(pt_lst m / os cmd)
  116.    (setq os (getvar "osmode"))
  117.    (setq cmd (getvar "cmdecho"))
  118.    (setvar "osmode" 0)
  119.    (setvar "cmdecho" 0)
  120.    (command "_.3dmesh" m (/ (length pt_lst) m))
  121.    (mapcar 'command pt_lst)
  122.    (setvar "osmode" os)
  123.    (setvar "cmdecho" cmd)
  124. )(defun c:mesh( / pts)
  125.    (setq ty (getstring "[(I)输入]<(O)输出>:"))
  126.    (if (or (= ty "I") (= ty "i"))      
  127.        (progn
  128.            (setq pts (ReadTxt))
  129.            (if pts
  130.   (MakeMesh (car pts) (cadr pts))
  131.            )
  132.        )
  133.        (OutTxt)
  134.    )
  135.    (princ)
  136. )
 楼主| 发表于 2004-2-11 09:05:00 | 显示全部楼层
非常感謝meflying,真是太佩服了,這項功能已交差了
发表于 2007-8-17 19:09:00 | 显示全部楼层
wangyue发表于2004-2-6 11:02:00請問自動產生多邊形網面(AcDbPolygonMesh)各個頂點坐標的清單

怎么用?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-20 06:22 , Processed in 0.178544 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表