明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 8033|回复: 24

[求助]怎么提取圆心坐标?

  [复制链接]
发表于 2007-12-8 14:18:00 | 显示全部楼层 |阅读模式

(defun c:ccord ()
  (setq ss (ssget))
  (setq n 0)
  (repeat (sslength ss)
    (setq en (ssname ss n ))
    (setq en_data (entget en))
    (setq cen_data (cdr (assoc 10 en_data)))
    (setq n (1+ n))
    )
  (sub_write_data)
  (prin1)
)

(defun sub_write_data ()
  (setq data_file (getfiled "写入坐标文件" "c:\\lsptools\\" "dat" 1))
  (setq ff (open data_file "w"))
  (write-line "对象名称     坐标尺寸" ff)
  (write-line "---------------------" ff)
  (write-line (itoa cen_data)    ff)
  (close ff)
  (prin1)
  )
(prompt "<<CCORD>>圆心提取程序")
(prin1)

 
  
   

 楼主| 发表于 2007-12-8 14:29:00 | 显示全部楼层
大家帮忙看一下!
发表于 2007-12-8 15:20:00 | 显示全部楼层

1.既然你的程序是提取圆心坐标,那么在选择的时候就应该把非圆图元过滤掉,这样可以减少运算量,提高程序的效率
  所以建议把(setq ss (ssget))改成(setq ss (ssget '((0 . "CIRCLE"))))

2.你现在的程序最多也只是把最后一个圆的圆心坐标写入数据文件。如果你是想每得到一个圆心坐标就写一次的话,应该把write-line放进循环;这个时候文件的打开应该是"a"的方式,而不是"w";如果你想提取所有圆心坐标再一次写入的话,应该在循环前创建一个变量来存放圆心坐标。待循环完毕再一次写入,这个时候文件的打开方式可以是"a",也可以是"w".

3.你要知道cen_data得到的是什么类型的数据,是一个包含圆心XYZ数值的表,而write-line接受的是字符串.如果你不会转换或不想转换,可以考虑用princ写入

发表于 2007-12-9 08:06:00 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 2 才可浏览,你当前发帖数只有 0

 楼主| 发表于 2007-12-9 12:16:00 | 显示全部楼层
谢谢指点!明天我试一下!
发表于 2007-12-30 00:36:00 | 显示全部楼层

看看版主的!呵呵1

发表于 2008-1-3 19:25:00 | 显示全部楼层

学习了.

发表于 2008-1-5 22:21:00 | 显示全部楼层

如何输出(12345678.21 45678941.25 0.00)而不是(1.23456e+007  4.56789e+007 0.00)

发表于 2008-1-5 23:41:00 | 显示全部楼层

(princ (strcat "(" (rtos (car cen_data) 2 2) " " (rtos (cadr cen_data) 2 2) " " (rtos (last cen_data) 2 2) ")"))

注意:变量DIMZIN要事先设成零。不然有可能小数点后有可能无零。

发表于 2008-1-9 00:11:00 | 显示全部楼层

图中实际坐标(12345678.21 45678941.25 0.00)

"rtos"后变为

(1.23456e+007  4.56789e+007 0.00)既有效为6位了原为10位的问题

能否输出字符为"12345678.21"为10位有效数

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

本版积分规则

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

GMT+8, 2025-5-19 11:00 , Processed in 0.305602 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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