请教如何利用lisp 删或加属性项!!!谢谢! 20

急用!谢谢各位高手赐教!... 急用!谢谢各位高手赐教! 展开
 我来答
byzhh78087
2010-06-30
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
Lisp的表达式是一个原子(atom)或表(list),原子(atom)是一个字母序列,如abc;表是由零个或多个表达式组成的序列,表达式之间用空格分隔开,放入一对括号中,如: abc () (abc xyz) (a b (c) d) 最后一个表是由四个元素构成的,其中第三个元素本身也是一个表。 正如算数表达式1+1有值2一样,Lisp中的表达式也有值,如果表达式e得出值v,我们说e返回v。如果一个表达式是一个表,那么我们把表中的第一个元素叫做操作符,其余的元素叫做自变量。 Lisp的7个公理(基本操作符): (quote x)返回x,我们简记为'x (atom x)当x是一个原子或者空表时返回原子t,否则返回空表()。在Lisp中我们习惯用原子t表示真,而用空表()表示假。 > (atom 'a) t > (atom '(a b c)) () > (atom '()) t 现在我们有了第一个需要求出自变量值的操作符,让我们来看看quote操作符的作用——通过引用(quote)一个表,我们避免它被求值。一个未被引用的表达式作为自变量,atom将其视为代码,例如: > (atom (atom 'a)) t 反之一个被引用的表仅仅被视为表 > (atom '(atom 'a)) () 引用看上去有些奇怪,因为你很难在其它语言中找到类似的概念,但正是这一特征构成了Lisp最为与众不同的特点——代码和数据使用相同的结构来表示,而我们用quote来区分它们。 (eq x y)当x和y的值相同或者同为空表时返回t,否则返回空表() > (eq 'a 'a) t > (eq 'a 'b) () > (eq '() '()) t (car x)要求x是一个表,它返回x中的第一个元素,例如: > (car '(a b)) a (cdr x)同样要求x是一个表,它返回x中除第一个元素之外的所有元素组成的表,例如: > (cdr '(a b c)) (b c) (cons x y)要求y是一个表,它返回一个表,这个表的第一个元素是x,其后是y中的所有元素,例如: > (cons 'a '(b c)) (a b c) > (cons 'a (cons 'b (cons 'c ()))) (a b c)
百度网友67cc7f043
2010-06-26 · TA获得超过222个赞
知道答主
回答量:73
采纳率:0%
帮助的人:77.3万
展开全部
用图形数据库处理函数,包括选择集、实体数据、符号表等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友16ef25c
2010-07-08 · 超过24用户采纳过TA的回答
知道答主
回答量:111
采纳率:0%
帮助的人:41.2万
展开全部
我不能解决你的问题,但给你个相关的资料看看

; 给某个图形对象添加或提取非图形数据的例程.
(Defun C:TDPut ()
(setq en (car (entsel "\n要加入用户数据的图形对象: "))
en (vlax-ename->vla-object en)
)
(vlax-ldata-put en "UKey2" "用户数据2")
)
(Defun C:TDGet112 ()
(setq en (car (entsel "\n要提取用户数据的图形对象: "))
en (vlax-ename->vla-object en)
)
(setq udata2 (vlax-ldata-get en "UKey2"))
)
; 给一个图形对象添加AutoLISP表达式,就是将这些表达式"附着"在指定的图形对象上,
; 并且随对象保存.之后,用简单的函数就可以激活这些表达式并且执行.
(Defun C:TDPut1 ()
(setq en (car (entsel "\n要加入应用程序(1)的图形对象: "))
en (vlax-ename->vla-object en)
a (getreal "\nReal: ")
)
(vlax-ldata-put en "UKey1" a)
(vlax-ldata-put en "UKey2"
'(alert (strcat "这个数的平方=" (rtos (* a a))))
)
)
(defun C:TDPut2 ()
(setq en (car (entsel "\n要加入应用程序(2)的图形对象: "))
en (vlax-ename->vla-object en)
a (getstring "\nString: ")
)
(vlax-ldata-put en "UKey1" a)
(vlax-ldata-put en "UKey2" '(alert (strcat "附加说明: " a)))
)
(defun C:TDGet ()
(setq en (car (entsel "\n要运行应用程序的图形对象: "))
en (vlax-ename->vla-object en)
)
(setq a (vlax-ldata-get en "UKey1"))
(eval (vlax-ldata-get en "UKey2"))
)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式