usercoolbo
发表于 2004-3-18 10:49:00
非常感谢MCCAD的帮助,帮我再修改一下程序吧,把椭圆改成块,还有能不能把你的思路讲一下啊,我也想学习学习!
另答楼上的师兄:我的本意是这样的,如附件所示,图上的高程点和高程标注是分开的,我想把所有的高程点导出成为*.DAT格式--->X坐标,Y坐标,Z坐标(X,Y坐标为圆心坐标,Z坐标为高程点旁边的标注高程).现在手头上用的都是一些小程序加起来完成的,要是能编一个程序一次性实现如上功能就好了!
BDYCAD
发表于 2004-3-18 12:02:00
這個可以生成塊的. 但不是無名塊. 還有個難點不懂的是. 不知如何在lisp中取得同心圓呢. 還望高手指教呀.
(DEFUN C:CBb()<BR> (SETQ ss(ssget "x" '((0 . "CIRCLE"))))<BR> (SETQ i 0)<BR> (repeat (sslength ss)<BR> (setq a (ssname ss i))<BR> (setq b (substr (RTOS (GETVAR "CDATE") 2 8) 10 9))<BR> (setq centpoint (cdr (assoc 10 (entget a))))<BR> (command ".block" (strcat "cb" b "x") centpoint a "")<BR> (command ".insert" (strcat "cb" b "x") centpoint "" "" "")<BR> (setq i (1+ i)))<BR> (princ))
usercoolbo
发表于 2004-3-18 12:24:00
谢谢BDYCAD,LISP编写的程序看起来要简捷得多呵,我刚学LISP没多久,谢谢指点!
我试过了,可以用,但是好像在一个图形里边不能重复定义块,错误提示如下:
命令: .insert 输入块名或 [?] <cb12185071x>: cb12185072x 指定插入点或 <BR>[比例(S)/X/Y/Z/旋转(R)/预览比例(PS)/PX/PY/PZ/预览旋转(PR)]:<BR>输入 X 比例因子,指定对角点,或 [角点(C)/XYZ] <1>: 输入 Y 比例因子或 <使用 X <BR>比例因子>: 指定旋转角度 <0>:<BR>命令: .block<BR>输入块名或 [?]: cb12185072x 块“cb12185072x”已存在。是否重定义?[是(Y)/否(N)] <BR><N>: 113.2141311567256,27.74713558478222<BR>请回答“是”或“否”。<BR>; 错误: 函数被取消<BR>是否重定义?[是(Y)/否(N)] <N>:
能不能修改一下,使其能自动替换以前定义的同名块?谢谢了
BDYCAD
发表于 2004-3-18 13:01:00
我認為不必用重復塊為佳. 這個小lisp是取系統的時間的里的數字轉為生成圖塊的名用的. 這樣就會使整下程序盡量避免生成同名的塊1. 我搞不懂你的意思. 為何要替換塊呢. 重做一個不同名的塊不可取嗎?
usercoolbo
发表于 2004-3-18 13:33:00
谢谢mccad的指点,我已经找到了解决的办法了啊!!十分感谢啊
以后有事还得多指教/!!!!
wyj_007
发表于 2004-3-18 14:22:00
我明白了,用这个程序加上一段读取圆边数字语句,可以变成做一个土方计算的程序,如可以做土方平衡计算。那只要提取小圆圆心X,Y坐标,加上圆边高程数字,再合成*.DAT格式--->X坐标,Y坐标,Z坐标数据不就行了。
usercoolbo
发表于 2004-3-18 17:37:00
BDYCAD谢谢了,我再试试看,以前试的时候老是出现如上的错误,我也不知道是哪儿的问题!
usercoolbo
发表于 2004-3-18 17:43:00
wyj_007发表于2004-3-18 14:22:00static/image/common/back.gif我明白了,用这个程序加上一段读取圆边数字语句,可以变成做一个土方计算的程序,如可以做土方平衡计算。那只要提取小圆圆心X,Y坐标,加上圆边高程数字,再合成*...
<BR>WYJ_007,能不能把你的意思讲清楚点,我有点不大理解,那个计算土方的程序是不是要建三角格网及DTM模形,还是使用其它的方法的呢,也许可以把若干问题放到一个程序里边来,你觉得呢?
subtlation
发表于 2004-3-19 08:38:00
请教一下明总:
For i = 0 To ss.Count - 1<BR> 语句
next
是不是每次运行循环回到for语句时,ss,count就会重新计算一次?
还有就是CS.Erase语句把圆删除后,ss的实体实际数量已经发生了改变。那么ss.count是不是就会变小?
假定是实体ss(2)被删除,那么以后引用ss(2)时,是由原来的ss(3)代替呢,还是出错?
龙龙仔
发表于 2004-3-19 12:24:00
BDYCAD发表于2004-3-18 12:02:00static/image/common/back.gif這個可以生成塊的. 但不是無名塊. 還有個難點不懂的是. 不知如何在lisp中取得同心圓呢. 還望高手指教呀.
(DEFUN C:CBb() (SETQ ss(ssget \"x\" '((0 . \"CI...
<FONT style="BACKGROUND-COLOR: #f3f3f3">下式選取所有半徑(群組碼 40)大於或等於 2.0 的圓周:</FONT>
<FONT style="BACKGROUND-COLOR: #f3f3f3">(ssget "X" '((0 . "CIRCLE") (-4 . ">=") (40 . 2.0)))</FONT>
<FONT style="BACKGROUND-COLOR: #f3f3f3">下表展示可能的關係運算子:</FONT>
<FONT style="BACKGROUND-COLOR: #f3f3f3">選集過濾器串列的關係運算子</FONT>
<FONT style="BACKGROUND-COLOR: #f3f3f3">運算子 描述<BR>"*" 全部適用(一律為真) <BR>"=" 等於 <BR>"!=" 不等於 <BR>"/=" 不等於 <BR>"<>" 不等於 <BR>"<" 小於 <BR>"<=" 小於或等於 <BR>">" 大於 <BR>">=" 大於或等於 <BR>"&" 逐位 AND(只限整數群組) <BR>"&=" 逐位遮罩等號(只限整數群組) </FONT><BR>