- 积分
- 7796
- 明经币
- 个
- 注册时间
- 2010-1-29
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 gbhsu 于 2012-8-23 20:41 编辑
鉴于LISP语言函数众多,语法繁琐,对于初学者没有丰富的经验积累,很难轻松写出所需的程序;而对于经验丰富者,要管理好LISP函数和自定义函数,亦非易事。明经资源极其丰富,精华好贴目不暇接,经典函数不计其数;但实际编程时往往记不住函数名,或下载的资源不知存于何处,极大降低工作效率。如果能编一两个通用函数让初学者,轻松明白其含义,快速编出想要的函数,那该多好!呵呵,不要急,这样的函数我已经编出两个,可以做很多很的事情,希望大家能喜欢。大家有币的出币,有钱的出钱,没钱没币的,吼吼呀。
下面来详细说明
先介绍第一个函数 get:
说明get后要带冒号--":"
我们可以先做一个选择集ss (setq ss(ssget))
或在命令行输入 ss: 就可以得到一个名为 ss 的选择集
(get: 'ss:0)就可以得到ss选择集的第一个对象,等于(ssname ss 0)
以次类推(get: 'ss:1)......
(get: 'ss:0) = <图元名: 7ef978c8>
同时ss:0也已被赋值 ss:0 = <图元名: 7ef978c8>
你也可以(setq xx (get: 'ss:0))
(get: 'ss:0:name) = "CIRCLE" 说明第一个对象是圆
(get: 'ss:0:color) = 2 说明第一个对象是黄色的
(get: 'ss:1:layer) = "WALL" 说明第二个对象在"WALL"层
(get: 'ss:circle) = <Selection set: d5c> 为圆的选择集
(sslength ss:circle)=10说明选择中有10个圆
(get: 'ss:block) 得到所有块的选择集
(get: 'ss:block:椅子1)得到所有块名为"椅子1"的选择集
(get: 'ss:text) 得到文字的选择集
(get: 'ss:text:list)得到文字的选择集列表
(<图元名: 7ef976f0> <图元名: 7ef976e8> <图元名: 7ef97600> <图元名: 7ef975f8> <图元名: 7ef975f0> <图元名: 7ef975e8> <图元名: 7ef975e0> <图元名: 7ef975d8>)
(get: 'ss:text:list:string)得到文字的选择集列表字符
("STR8" "STR7" "STR6" "STR5" "STR4" "STR3" "STR2" "STR1")
(get: 'ss:text:0:string)= "STR8" 明白什么意思了吧
(get: 'ss:circle:color:2:layer:wall:radius:100)
就得到颜色为黄色,WALL层,半径为100圆的选择集
怎么样,比用ssget方便吧,后面的属性可以任意带,
再介绍第二个函数 put:
同样先构造一个选择集(setq ss (ssget))
(setq sscircle (get: 'ss:circle))得到圆的选择集
(put: 'sscircle:color:5)修改圆为5号色
(put: 'sscircle:layer:wall)修改圆为 wall层 wall首先要存在
(put: 'sscircle:layer:wall:color:5:radius:100)修改圆为 wall层 5号色 半径为100
(put: 'ss:text:string:cmdX:height:100:color:6)修改文字为 "cmdX" 字高为100 6号色
第三个函数set:
此函数主要是生成新的对象如line circle text等 类似vba的method方法
(setq pt1 (getpoint));第一点
(setq pt2 (getpoint));第二点
(set: 'line:pt1:pt2)=(vla-addline pt1 pt2)就创建了一条经pt1,pt2的直线
(set: 'circle:pt1:100)就创建了一条中心点pt1,圆半径为100的圆
如果要wall层,创建5号色的对象可以这样写
(set: 'line:pt1:pt2:layer:wall:color:5)
(set: 'circle:pt1:layer:wall:color:5)
如果要在创建对象的同时,移动,拷贝对象可以如下写:
(set: 'line:pt1:pt2:layer:wall:color:5:move:pt3:pt4)
(set: 'circle:pt1:layer:wall:color:5:copy:pt3:pt4)
程序已更新.
增加一功能: (set: 'line:getpoint:getpoint)可以交互选点.
CAD绘图本质就三部分 一是创建对象 二是修改对象属性 三是查询对象属性
至此"程咬金的三板斧"主要框架已搭成,主要功能已实现,但还有很多工作量没有完成
我在明经也就是个打酱油的,跟在众多高人身后跟班学习,
写这个玩意主要目的,是整合资源,整理函数库,希望写lisp,就象写一句话一样简单
一直以来编程语言都是西方思维,由小到大;
而东方思维却是由大到小,这也是本人实现东方思维编程的一次尝试
希望大家能够互动,提出宝贵意见!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
评分
-
查看全部评分
|