明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 943|回复: 5

[提问] 请教下大家 为啥我程序的 pt2 值不会变呢?

[复制链接]
发表于 2014-3-26 13:20 | 显示全部楼层 |阅读模式
1明经币
(setq du (entget (car (entsel))))
   (setq pt1 (assoc 10 du ))
   (setq pt2 pt1)
   (print pt1)
   (setq xie-y (- (nth 2 pt1) 6000 ))
   (subst xie-y (nth 2 pt2) pt2)
   (print pt2)

最佳答案

查看完整内容

(subst xie-y (nth 2 pt2) pt2) 改为(setq pt2 (subst xie-y (nth 2 pt2) pt2)) 你要用SETQ来回收替换掉的PT2的值啊
发表于 2014-3-26 13:20 | 显示全部楼层
(subst xie-y (nth 2 pt2) pt2)
改为(setq pt2  (subst xie-y (nth 2 pt2) pt2))
你要用SETQ来回收替换掉的PT2的值啊
回复

使用道具 举报

 楼主| 发表于 2014-3-26 15:15 | 显示全部楼层
ysq101 发表于 2014-3-26 13:20
(subst xie-y (nth 2 pt2) pt2)
改为(setq pt2  (subst xie-y (nth 2 pt2) pt2))
你要用SETQ来回收替换掉 ...

问题已经解决 我现在要调用 “command” 命令 把选择的图元 copy 到其他位置 一直未能实现求解。
(setq aaa (car (entsel)))
(setq du (entget aaa))
   (print du)
   (setq pt1 (cdr (assoc 10 du )))
   (setq pt2 pt1)
   (print pt1)
   (setq xie-y (- (nth 1 pt1) 6000 ))
   (setq pt2 (subst xie-y (nth 1 pt2) pt2))
   (print pt2)
   (print (entlast))
   (command "copy" (entlast) pt1 pt2"")
回复

使用道具 举报

发表于 2014-3-26 17:47 | 显示全部楼层
cwzfirst 发表于 2014-3-26 15:15
问题已经解决 我现在要调用 “command” 命令 把选择的图元 copy 到其他位置 一直未能实现求解。
(setq  ...

我汗一个先。。。。。这程序不是这么写的啊。。。
你一开始思路就不对啊
说说你最终要做什么吧
回复

使用道具 举报

发表于 2014-3-26 17:50 | 显示全部楼层
本帖最后由 ysq101 于 2014-3-26 17:53 编辑
cwzfirst 发表于 2014-3-26 15:15
问题已经解决 我现在要调用 “command” 命令 把选择的图元 copy 到其他位置 一直未能实现求解。
(setq  ...
  1. (setq aaa (car (entsel)))
  2. (setq du (entget aaa))
  3.    (print du)
  4.    (setq pt1 (cdr (assoc 10 du )))
  5.    (setq pt2 pt1)
  6.    (print pt1)
  7.    (setq xie-y (- (nth 1 pt1) 6000 ))
  8.    (setq pt2 (subst xie-y (nth 1 pt2) pt2)) ;这话返回的是一个实数
  9.    (print pt2)
  10.    (print (entlast)) ;再说你在这之前也没有生成图元啊,,,所以
  11. entlast  反回的是你更之前的最后一个图元

  12.    (command "copy" (entlast) pt1 pt2"")    ;错误在PT2不是点
帮你看了一下。。。你的PT2不是点啊。。。

点评

pt2它应该是一个点,当然,它是一个三维点还是一个二维点取决于于entsel所点取的图元类型 选择的图元它应该是aaa而不一定会是(entlast),另外copy命令是是否要求图元还是选择集我搞不太明白  发表于 2014-4-12 23:08
回复

使用道具 举报

发表于 2014-4-12 23:14 | 显示全部楼层
本帖最后由 llsheng_73 于 2014-4-12 23:16 编辑
ysq101 发表于 2014-3-26 17:50
帮你看了一下。。。你的PT2不是点啊。。。

(setq pt1 (cdr (assoc 10 du )))
(setq pt2(list(car pt1)(- (nth 1 pt1) 6000 ))
        pt2(if(=(length pt1)3)(append pt2(list(last pt1)))pt2))
;;不直接用(setq pt2(subst(- (nth 1 pt1) 6000)(nth 1 pt1) pt1)),因为当pt1的x和y相等的时候它会全部被替换而导致结果不对,这是很容易被忽略的一个隐藏错误,当然,一般情况下(比如测绘)X,Y坐标通常位数都不会相同,它并不会引出错误结果
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-20 22:23 , Processed in 0.370975 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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