明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: usercoolbo

急求:将圆批量转为块的程序

  [复制链接]
 楼主| 发表于 2004-3-18 10:49 | 显示全部楼层
非常感谢MCCAD的帮助,帮我再修改一下程序吧,把椭圆改成块,还有能不能把你的思路讲一下啊,我也想学习学习!



另答楼上的师兄:我的本意是这样的,如附件所示,图上的高程点和高程标注是分开的,我想把所有的高程点导出成为*.DAT格式--->X坐标,Y坐标,Z坐标(X,Y坐标为圆心坐标,Z坐标为高程点旁边的标注高程).现在手头上用的都是一些小程序加起来完成的,要是能编一个程序一次性实现如上功能就好了!


本帖子中包含更多资源

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

x
发表于 2004-3-18 12:02 | 显示全部楼层
這個可以生成塊的. 但不是無名塊. 還有個難點不懂的是. 不知如何在lisp中取得同心圓呢. 還望高手指教呀. (DEFUN C:CBb()
(SETQ ss(ssget "x" '((0 . "CIRCLE"))))
(SETQ i 0)
(repeat (sslength ss)
(setq a (ssname ss i))
(setq b (substr (RTOS (GETVAR "CDATE") 2 8) 10 9))
(setq centpoint (cdr (assoc 10 (entget a))))
(command ".block" (strcat "cb" b "x") centpoint a "")
(command ".insert" (strcat "cb" b "x") centpoint "" "" "")
(setq i (1+ i)))
(princ))
 楼主| 发表于 2004-3-18 12:24 | 显示全部楼层
谢谢BDYCAD,LISP编写的程序看起来要简捷得多呵,我刚学LISP没多久,谢谢指点! 我试过了,可以用,但是好像在一个图形里边不能重复定义块,错误提示如下: 命令: .insert 输入块名或 [?] <cb12185071x>: cb12185072x 指定插入点或
[比例(S)/X/Y/Z/旋转(R)/预览比例(PS)/PX/PY/PZ/预览旋转(PR)]:
输入 X 比例因子,指定对角点,或 [角点(C)/XYZ] <1>: 输入 Y 比例因子或 <使用 X
比例因子>: 指定旋转角度 <0>:
命令: .block
输入块名或 [?]: cb12185072x 块“cb12185072x”已存在。是否重定义?[是(Y)/否(N)]
<N>: 113.2141311567256,27.74713558478222
请回答“是”或“否”。
; 错误: 函数被取消
是否重定义?[是(Y)/否(N)] <N>: 能不能修改一下,使其能自动替换以前定义的同名块?谢谢了
发表于 2004-3-18 13:01 | 显示全部楼层
我認為不必用重復塊為佳. 這個小lisp是取系統的時間的里的數字轉為生成圖塊的名用的. 這樣就會使整下程序盡量避免生成同名的塊1.         我搞不懂你的意思. 為何要替換塊呢.         重做一個不同名的塊不可取嗎?
 楼主| 发表于 2004-3-18 13:33 | 显示全部楼层
谢谢mccad的指点,我已经找到了解决的办法了啊!!十分感谢啊


以后有事还得多指教/!!!!
发表于 2004-3-18 14:22 | 显示全部楼层
我明白了,用这个程序加上一段读取圆边数字语句,可以变成做一个土方计算的程序,如可以做土方平衡计算。那只要提取小圆圆心X,Y坐标,加上圆边高程数字,再合成*.DAT格式---&gt;X坐标,Y坐标,Z坐标数据不就行了。
 楼主| 发表于 2004-3-18 17:37 | 显示全部楼层
BDYCAD谢谢了,我再试试看,以前试的时候老是出现如上的错误,我也不知道是哪儿的问题!
 楼主| 发表于 2004-3-18 17:43 | 显示全部楼层
wyj_007发表于2004-3-18 14:22:00我明白了,用这个程序加上一段读取圆边数字语句,可以变成做一个土方计算的程序,如可以做土方平衡计算。那只要提取小圆圆心X,Y坐标,加上圆边高程数字,再合成*...

WYJ_007,能不能把你的意思讲清楚点,我有点不大理解,那个计算土方的程序是不是要建三角格网及DTM模形,还是使用其它的方法的呢,也许可以把若干问题放到一个程序里边来,你觉得呢?
发表于 2004-3-19 08:38 | 显示全部楼层
请教一下明总: For i = 0 To ss.Count - 1
语句 next 是不是每次运行循环回到for语句时,ss,count就会重新计算一次? 还有就是CS.Erase语句把圆删除后,ss的实体实际数量已经发生了改变。那么ss.count是不是就会变小? 假定是实体ss(2)被删除,那么以后引用ss(2)时,是由原来的ss(3)代替呢,还是出错?
发表于 2004-3-19 12:24 | 显示全部楼层
BDYCAD发表于2004-3-18 12:02:00這個可以生成塊的. 但不是無名塊. 還有個難點不懂的是. 不知如何在lisp中取得同心圓呢. 還望高手指教呀. (DEFUN C:CBb() (SETQ ss(ssget \"x\" '((0 . \"CI...
下式選取所有半徑(群組碼 40)大於或等於 2.0 的圓周: (ssget "X" '((0 . "CIRCLE") (-4 . ">=") (40 . 2.0))) 下表展示可能的關係運算子: 選集過濾器串列的關係運算子 運算子 描述
"*" 全部適用(一律為真)
"=" 等於
"!=" 不等於
"/=" 不等於
"<>" 不等於
"<" 小於
"<=" 小於或等於
">" 大於
">=" 大於或等於
"&" 逐位 AND(只限整數群組)
"&=" 逐位遮罩等號(只限整數群組)

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

本版积分规则

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

GMT+8, 2024-4-26 17:06 , Processed in 0.273884 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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