明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: yth0407

求转出槽孔每个点坐标成文本文件的LISP!

  [复制链接]
 楼主| 发表于 2007-10-7 13:26:00 | 显示全部楼层
sailorcwx发表于2007-10-3 15:36:00什么是R角。锐角?

R角是指圆弧,不是锐角。就是比如一个方孔四个角是圆角,转坐标的时候能不能把这圆弧的中点坐标也转出来。
 楼主| 发表于 2007-10-7 13:34:00 | 显示全部楼层
ZZXXQQ发表于2007-10-5 10:20:00试试看能否满足要求。

先感谢ZZXXQQ兄的帮忙,ZZXXQQ的这一段也只能转出槽孔每条线段的点,有圆角的也会跳过啊,并不能转出圆弧的中点。还有就是每个槽孔不能回到第一点,我的要求是每个槽孔转出来的坐标第一个跟最后一个是相同的。不过ZZXXQQ兄的这段也有个好处就是转了坐标的孔会变成白色,这点还是很感谢ZZXXQQ兄了。
发表于 2007-10-7 15:25:00 | 显示全部楼层
这是带输出圆弧中点的程序。(可是有什么用呢?)
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

 楼主| 发表于 2007-10-10 17:07:00 | 显示全部楼层

ZZXXQQ的转出带圆弧中点坐标的程式不对啊,比如一个10*10的方孔,四个角是R1的圆弧.

ZZXXQQ兄的程式转出坐标:

X10.000 Y9.000
X9.000 Y10.000
X9.000 Y10.000
X1.000 Y10.000
X1.000 Y10.000
X0.000 Y9.000
X0.000 Y1.000
X1.000 Y2.000
X1.000 Y0.000
X9.000 Y0.000
X9.000 Y2.000
X10.000 Y1.000
X10.000 Y9.000

小弟想转出的坐标:

X10.000 Y9.000
X9.707 Y9.707
X9.000 Y10.000
X1.000 Y10.000
X0.293 Y9.707
X0.000 Y9.000
X0.000 Y1.000
X0.293 Y0.293
X1.000 Y0.000
X9.000 Y0.000
X9.707 Y0.293
X10.000 Y1.000
X10.000 Y9.000

ZZXXQQ兄能不能再改一改程式,转出坐标小弟是用在投影机上的.先谢谢了.

发表于 2007-10-11 21:44:00 | 显示全部楼层
  1.   (defun c:cs(/ X YH_BO YH_FILE YH_INDEX YH_LE YH_LPT YH_OBJ YH_PT YH_PT1 YH_PTL YH_PTL1 YH_RANGLE YH_RPT)
  2.    (vl-load-com)
  3.    (command)
  4.    (setq YH_ptl '())
  5.    (while (setq YH_pt1 (getpoint "\n选择孔内部点或者右键退出:"))
  6.      (setq YH_le (entlast))
  7.      (command "boundary" "a" "i" "n" "" "" YH_pt1 "")
  8.      (setq YH_bo (entlast))
  9.      (setq YH_ptl1 '())
  10.      (if (eq YH_le YH_bo)
  11.        (alert "错误,所选区域不封闭!")
  12.        (progn
  13.   (setq YH_rangle nil
  14.         YH_obj (vlax-ename->vla-object YH_bo)
  15.         )
  16.   (mapcar '(lambda (x)
  17.       (if (= (car x) 10)
  18.         (progn
  19.    (setq YH_pt (cdr x))
  20.    (if YH_rangle
  21.      (setq YH_lpt (last YH_ptl1)
  22.     YH_rpt (vlax-curve-getpointatparam YH_obj (/ (+ (vlax-curve-getparamatpoint YH_obj YH_pt)(vlax-curve-getparamatpoint YH_obj YH_lpt)) 2))
  23.     YH_ptl1 (append YH_ptl1 (list YH_rpt YH_pt))
  24.     YH_rangle nil
  25.     )
  26.      (setq YH_ptl1 (append YH_ptl1 (list YH_pt)))
  27.      )
  28.    )
  29.         )
  30.       (if (and (= (car x) 42) (/= (cdr x) 0))
  31.         (setq YH_rangle T)
  32.         )
  33.       )
  34.    (entget YH_bo))
  35.   (entdel YH_bo)
  36.   )
  37.        )
  38.      (if YH_ptl1 (setq YH_ptl (append YH_ptl (list (append YH_ptl1 (list (car YH_ptl1)))))))
  39.      )
  40.    (if YH_ptl
  41.      (progn
  42.        (setq YH_file (open "C:\\1.txt" "W")
  43.       YH_index 0
  44.       )
  45.        (repeat (length YH_ptl)
  46.   (setq YH_ptl1 (nth YH_index YH_ptl))
  47.   (write-line (strcat "======第" (rtos (1+ YH_index) 2 0) "个孔顶点坐标======") YH_file)
  48.   (mapcar '(lambda (x) (write-line (strcat "X" (rtos (car X)) "Y" (rtos (cadr X))) YH_file)) YH_ptl1)
  49.   (write-line "" YH_file)
  50.   (setq YH_index (1+ YH_index))
  51.   )
  52.        (close YH_file)
  53.        (startapp "notepad" "C:\\1.txt")
  54.        )
  55.      )
  56. (princ)
  57.    )
 楼主| 发表于 2007-10-13 10:08:00 | 显示全部楼层
谢谢sailorcwx兄的帮忙。太感谢了!
 楼主| 发表于 2007-10-15 19:12:00 | 显示全部楼层

sailorcwx兄,首先感谢你的帮助,小弟用在投影机上的程式已经OK了,现在想稍微改一下你的程式用在CNC加工中心.还有点小问题,想请你再费心帮帮忙..小弟就是还想在"G01 Z-1.0F800"上面再加一行"G00 每个孔的第一个点X Y坐标",有空的话就帮我把第一行那个"****. nc"也改成当前图形的文件名.我用(setq filename(getvar "dwgname"))得出的文件是还带.dwg的文件名.你能不能改成只要数字的文件名,比如我当前图文件名是1234-m.dwg,能不能得出是1234.nc

   (defun c:cs(/ X YH_BO YH_FILE YH_INDEX YH_LE YH_LPT YH_OBJ YH_PT YH_PT1 YH_PTL YH_PTL1 YH_RANGLE YH_RPT)
    (vl-load-com)
    (command)
    (setq YH_ptl '())
    (while (setq YH_pt1 (getpoint "\n选择孔内部点或者右键退出:"))
      (setq YH_le (entlast))
      (command "boundary" "a" "i" "n" "" "" YH_pt1 "")
      (setq YH_bo (entlast))
      (setq YH_ptl1 '())
      (if (eq YH_le YH_bo)
        (alert "错误,所选区域不封闭!")
        (progn
   (setq YH_rangle nil
         YH_obj (vlax-ename->vla-object YH_bo)
         )
   (mapcar '(lambda (x)
       (if (= (car x) 10)
         (progn
    (setq YH_pt (cdr x))
    (if YH_rangle
      (setq YH_lpt (last YH_ptl1)
     YH_rpt (vlax-curve-getpointatparam YH_obj (/ (+ (vlax-curve-getparamatpoint YH_obj YH_pt)(vlax-curve-getparamatpoint YH_obj YH_lpt)) 2))
     YH_ptl1 (append YH_ptl1 (list YH_rpt YH_pt))
     YH_rangle nil
     )
      (setq YH_ptl1 (append YH_ptl1 (list YH_pt)))
      )
    )
         )
       (if (and (= (car x) 42) (/= (cdr x) 0))
         (setq YH_rangle T)
         )
       )
    (entget YH_bo))
   (entdel YH_bo)
   )
        )
      (if YH_ptl1 (setq YH_ptl (append YH_ptl (list (append YH_ptl1 (list (car YH_ptl1)))))))
      )
    (if YH_ptl
      (progn
        (setq YH_file (open "C:\\1.txt" "W")
       YH_index 0
       )
   (write-line "%" YH_file)
   (write-line "(****.nc)" YH_file)
   (write-line "M06 T2 (D=3.0)" YH_file)
   (write-line "M08" YH_file)
   (write-line "G80G90G54F80" YH_file)
   (write-line "G00 X0.0 Y0.0 M03S2000" YH_file)
   (write-line "G43 H2 Z5.0" YH_file)
   (write-line "G01 F100 Z2.0" YH_file)
   (repeat (length YH_ptl)
   (setq YH_ptl1 (nth YH_index YH_ptl))
   (write-line (strcat "N" (rtos (1+ YH_index) 2 0)) YH_file)
   (write-line "G01 Z-1.0F800" YH_file)
   (mapcar '(lambda (x) (write-line (strcat "G01" "X" (rtos (car X)) "Y" (rtos (cadr X))) YH_file)) YH_ptl1)
   (write-line "G00 Z5.0" YH_file)
   (write-line "M01" YH_file)
   (setq YH_index (1+ YH_index))
   )
   (write-line "G00 X0 Y0" YH_file)
   (write-line "M30" YH_file)
   (write-line "%" YH_file)
        (close YH_file)
        (startapp "notepad" "C:\\1.txt")
        )
      )
(princ)
    )

 楼主| 发表于 2007-10-15 21:14:00 | 显示全部楼层

小弟想加的那行"G00 第一点坐标"已经解决,麻烦sailorcwx兄指点一下怎么得出当前图形文件名?只要得出文件名的数字.比如当前图形文件名是1234-m.dwg,只要得出1234.谢谢

发表于 2007-10-15 21:58:00 | 显示全部楼层
本帖最后由 作者 于 2007-10-15 23:06:02 编辑

;;更改了txt文件的位置,与dwg保存于同一位置
;;修正了一个bug:当R角位于多段线最后一段时会遗漏R角中点,现已修正

本帖子中包含更多资源

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

x
 楼主| 发表于 2007-10-16 12:15:00 | 显示全部楼层
真的是太谢谢了。能不能在点选孔后就把这孔变一种颜色或者改成另一层,比如每点选一个孔后,点选过的孔就自动改到第4层或变成红色这样,以免漏选。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-27 21:13 , Processed in 0.186216 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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