明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2541|回复: 3

[求助]三维正四角锥网格lisp程序

[复制链接]
发表于 2007-1-15 13:02 | 显示全部楼层 |阅读模式

三维正四角锥网格是三维网格的一种,  我在做这方面的毕业设计,前段时间看到一下lisp程序,感觉不太理想,有没有高手愿意帮忙?

要求是这样的:把一个CAD里面(全部都是点的)坐标输出到指定的文件里面,格式如下:

序号,X坐标,Y坐标,Z坐标,一个常数1//2/3

1、序号还有如下要求:看附图;

2、常数有如下要求:点坐标在图层1的这个常数就是1

                                 点坐标在图层2的这个常数就是2

                                 点坐标在图层3的这个常数就是3

 楼主| 发表于 2007-1-15 13:05 | 显示全部楼层
本帖最后由 作者 于 2007-1-15 18:57:12 编辑

节点编号按这个顺序

本帖子中包含更多资源

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

x
 楼主| 发表于 2007-1-15 13:15 | 显示全部楼层


;;;拾取Cad点坐标生成数据文件,程序是在d盘根目录下生成一个node.txt文件
;;;'write by Hejian 2002 free to copy


(defun c:nd (/ kw fil cont esel oldos num1 pt pttext s s1 va pt1 pt2 l n fid)

  (initget "O N")
  (setq kw (getkword "\n[建立新文件(N)/打开文件(O)]:"))
  (if kw
    (progn
      (setq fil (strcat "d://"
   (getstring "[输入文件名(*.dat)]:")
   ".dat"
  )
      )
      (setq input 0)

    )
    (progn
      (setq fil (getfiled "\nSelect a Dat File" "D:/" "dat" 8))
      (setq fid (open fil "r"))
      (setq lin (read-line fid))
      (while lin
 (setq end lin)
 (setq lin (read-line fid))
      )
      (close fid)
      (setq l (vl-string-position (ascii ",") end))
      (setq n (atoi (substr end 1 l)))
      (setq input n)


    )
  )
  (if (= nil fil)
    (setq fil "d://node.dat")
  )
  (graphscr)
  (setq pt (getpoint "\nplease pick a point:"))
  (while pt
    (setvar "cmdecho" 0)
    (setq
   input (1+ input)
   s2 (strcat "\nnode number< " (itoa input))
   s2 (strcat s2 ">")
    )
    (initget 6)
    (setq num1 (getint s2))
    (if (/= num1 nil)
      (setq input num1)
    )
    (setq pttext (list (+ (car pt) 0.05) (cadr pt) (caddr pt))
   s  (itoa input)
    )

    (setq s1 s)
    (setq va (cadr pt))
;;;cadr得到y坐标
    (setq s1 (strcat s1 ","))
    (setq s1 (strcat s1 (rtos va 2 3)))
    (setq va (car pt))
;;;car得到x坐标
    (setq s1 (strcat s1 ","))
    (setq s1 (strcat s1 (rtos va 2 3)))

    (setq va (caddr pt))
    (setq s1 (strcat s1 ","))
    (setq s1 (strcat s1 (rtos va 2 3)))
    (command "layer" "m" "序号层" "s" "序号层" "")
    (command "text" (trans pttext 0 1) "" "" s)
    (command "ucs" "")
    (setq fid (open fil "a"))
    (write-line s1 fid)
    (close fid)
    (setq pt (getpoint "\n点取下一点,回车退出:"))
  )
  (princ)

)
这个程序在编号这里比较开放的,但网格有很多,这样就不方便了,所以要加上一个默认编号的方式.

由于我贴图贴不来,附件没有发上来

 楼主| 发表于 2007-1-15 13:19 | 显示全部楼层
本帖最后由 作者 于 2007-1-15 19:01:04 编辑

编号是这样的,从0,0,0开始标,如下

   7      9 

6      8     10

   2      4

1     3      5

1,0.000,0.000,0.000
2,1.000,1.000,-2.000
3,0.000,2.000,0.000
4,1.000,3.000,-2.000
5,0.000,4.000,0.000
6,1.000,5.000,-2.000
7,0.000,6.000,0.000
8,1.000,7.000,-2.000
9,0.000,8.000,0.000
10,1.000,9.000,-2.000

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-20 04:35 , Processed in 0.265250 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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