明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3373|回复: 13

疑惑:DXF组码与Car,Cdr的配合使用?

  [复制链接]
发表于 2003-9-4 20:34:00 | 显示全部楼层 |阅读模式
困惑,如题!

能分析一下么?
发表于 2003-9-4 21:07:00 | 显示全部楼层
你让别人更困惑,你想问什么?
发表于 2003-9-5 08:49:00 | 显示全部楼层

他的意思是取到一个实体

EgoEr发表于2003-9-4 20:34:00疑惑:DXF组码与Car,Cdr的配合使用?
困惑,如题!

能分析一下么?


他的意思是取到一个实体的。。。。
根据不同的东西有所以不同,可以差相关的资料
比如一个圆ent
(setq ls (entget ent))
这时ls为一个表,在COmmand:下用!ls可以看到他的内容。
(setq lay (cdr (assoc 8 ls)))........取值.
以上是纯lsp的写法
 楼主| 发表于 2003-9-5 19:53:00 | 显示全部楼层
不好意思,昨天的问题没有讲述清楚!
------------------------------------------------------------
我就这样说吧,用entsel捕捉一个实体(为文本,值假设为1.580),我想把里面的值(1.580)减去一个数(假设为0.55),然后在返回到原实体。
可我在用entget取的联接表后,用car,cdr和assoc配合使用得到了字符串(“1.580”),然后用atof将字符串转换为实数(1.580)。(之前一切正常,之后就有错误出现,提示为参数类型错误,“百思不得其解,不知到那里出了错?”)做减法后,再转换为字符串,之后用subst带入,替换原值。

----------------------------------------------------------------------
发表于 2003-9-5 20:22:00 | 显示全部楼层
之后你是怎么做的?用了哪些函数,我估计可能是函数用错了,
看以下代码,没问题。适用TEXT。
  1. (defun c:test( / sinf txt txt_n)
  2.   (setq sinf (entget (ssname (ssget '((0 . "text")))0)))
  3.   (setq txt (cdr (assoc 1 sinf)))
  4.   (setq txt_n (atof txt))
  5.   (setq txt_n (- txt_n 0.9))
  6.   (setq txt (rtos txt_n))
  7.   (setq sinf (subst (cons 1 txt) (assoc 1 sinf) sinf))
  8.   (entmod sinf)
  9.   (princ)
  10. )
 楼主| 发表于 2003-9-6 12:04:00 | 显示全部楼层
;这是我编的程序,请版主帮忙分析下!
(defun c:ee ()
  (setq ent (entget (car (entsel))))
  (setq txt (cdr (assoc 1 ent)))
  (atof txt)
;;以上片段都没有问题,问题就在下面这些片段中,搞不懂到底哪里出了错?
  (setq txt1(- txt 0.5))
  (rtos txt1)
  (setq ent(subst(cons 1 txt1) (assoc 1 ent) ent))
(princ)
)
发表于 2003-9-6 12:11:00 | 显示全部楼层
你的程序出了问题,
(atof txt)仅将字符串转换为实数返回,你并没有将这个返回值付给txt,因此此时txt仍然为字符串。

  1. (defun c:ee ()
  2.   (setq ent (entget (car (entsel))))
  3.   (setq txt (cdr (assoc 1 ent)))
  4.   (setq txt (atof txt)) ;;此处如此
  5.   (setq txt1(- txt 0.5))
  6.   (rtos txt1)
  7.   (setq ent(subst(cons 1 txt1) (assoc 1 ent) ent))
  8. (princ)
  9. )  
 楼主| 发表于 2003-9-6 12:16:00 | 显示全部楼层
meflying,你回帖的速度真是太快了!

多谢了!
发表于 2003-9-6 12:20:00 | 显示全部楼层
正好在线,
看了一下,好象后面还有错误,错误类型一样的,你自己看看琢磨一下吧
发表于 2003-9-6 15:32:00 | 显示全部楼层
meflying发表于2003-9-5 20:22:00之后你是怎么做的?用了哪些函数,我估计可能是函数用错了,
看以下代码,没问题。适用TEXT。
(defun c:test( / sinf txt txt_n)
   (setq sinf (entget (ssname (ssget '((0 . &quot



(ssget '((0 . "text")))  报错类型错误。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 22:27 , Processed in 0.183619 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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