找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1266|回复: 8

[求助] 输出多段线各段x、y方向增量

[复制链接]
发表于 2013-6-8 16:10:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请问大神们,我要输出一条多段线各段x、y方向的增量,但是要求x方向增量必须是正值,就是说x方向增量如果是负的就取绝对值,正的还是取正的,但y方向正的就是正的负的就是负的,lisp程序该怎么写啊

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-6-8 16:33:09 | 显示全部楼层
本帖最后由 ll_j 于 2013-6-8 16:37 编辑

借牢固版主(G版)的代码改一下给你:

  1. (setq lst (mapcar
  2.             '(lambda (x)
  3.                (cons (abs (car x)) (cdr x))
  4.              )
  5.             ((lambda (l)
  6.                (mapcar
  7.                  (function
  8.                    (lambda
  9.                      (a b)
  10.                       (mapcar '- b a)
  11.                    )
  12.                  )
  13.                  l
  14.                  (cdr l)
  15.                )
  16.              )
  17.               (mapcar
  18.                 'cdr
  19.                 (vl-remove-if-not
  20.                   (function
  21.                     (lambda (x) (= 10 (car x)))
  22.                   )
  23.                   (entget (car (entsel "\n选择多段线:")))
  24.                 )
  25.               )
  26.             )
  27.           )
  28. )

点评

'(lambda(x)...)与(function (lambda(x)...))这两在效果上有何区别?  详情 回复 发表于 2013-6-8 22:00
自己改动了一下,哈哈,实现别的功能,多谢源码  详情 回复 发表于 2013-6-8 19:06
学习了,看了好久才看懂。  详情 回复 发表于 2013-6-8 18:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-8 18:42:29 | 显示全部楼层
ll_j 发表于 2013-6-8 16:33
借牢固版主(G版)的代码改一下给你:

学习了,看了好久才看懂。:L
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-8 19:06:34 | 显示全部楼层
ll_j 发表于 2013-6-8 16:33
借牢固版主(G版)的代码改一下给你:

  1. ;;;返回多段线的每段直线距离
  2. (setq lst ((lambda (l)
  3.              (mapcar 'distance
  4.                      l
  5.                      (cdr l)
  6.              )
  7.            )
  8. ;;;获取选择对象(多线段)的各个顶点坐标
  9.             (mapcar
  10.               'cdr
  11.               (vl-remove-if-not
  12.                 (function
  13.                   (lambda (x) (= 10 (car x)))
  14.                 )
  15.                 (entget (car (entsel "\n选择多段线:")))
  16.               )
  17.             )
  18. ;;;获取选择对象(多线段)的各个顶点坐标
  19.           )
  20. )


自己改动了一下,哈哈,实现别的功能,多谢源码;P
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-8 21:47:09 来自手机 | 显示全部楼层
发上来分享啊来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-8 22:00:35 | 显示全部楼层
ll_j 发表于 2013-6-8 16:33
借牢固版主(G版)的代码改一下给你:

'(lambda(x)...)与(function (lambda(x)...))这两在效果上有何区别?

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

发表于 2013-6-9 01:34:30 | 显示全部楼层
真牛!好像在看天书一个样!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-6-9 05:44:54 来自手机 | 显示全部楼层
只知道,function 在调试时可以在lambda语句内设置断点,用' 的不能在(lambda ()    )内部语句设置断点,开始需要调试是用(function (lambda() …),这样可以逐句调试来自: Android客户端

评分

参与人数 1D豆 +5 收起 理由
wowan1314 + 5 技术引导讨论和指点奖! 原来只是为了方便.

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 10249个

财富等级: 富甲天下

发表于 2013-6-9 07:58:08 | 显示全部楼层
  1. ;输出长度到文件 zxq0220 2013.6.9
  2. (defun c:tt ()
  3. (setq nm (if (= (type nm) 'STR) nm ""))
  4. (if (and (setq nm (getfiled "选择保存文件名" nm "txt" 1))
  5.              (setq ss (ssget '((0 . "LWPOLYLINE"))))) (progn
  6.   (setq i -1)
  7.   (repeat (sslength ss)
  8.    (setq ent (entget(ssname ss (setq i (1+ i)))))
  9.    (setq plst (list))
  10.    (foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
  11.    (setq plst (reverse plst))
  12.    (setq llst (mapcar
  13.      '(lambda (a b) (list (abs(- (car b) (car a))) (- (cadr b) (cadr a))))
  14.      plst (cdr plst)
  15.     )
  16.    )
  17.    (setq fp (open nm (if (findfile nm) "a" "w")))
  18.    (mapcar
  19.    '(lambda (x)
  20.    (princ "X=" fp) (princ (car x) fp)
  21.    (princ "Y=" fp) (princ (cadr x) fp) (princ "\n" fp)
  22.    )
  23.    llst
  24.   )
  25.   (princ "\n" fp)
  26.   (close fp)
  27. )
  28. ))
  29. (princ)
  30. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-9-25 12:19 , Processed in 0.502389 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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