找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1158|回复: 14

[求助] 一段代码,请大神解读

[复制链接]
发表于 2017-2-24 22:07:04 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 行雲 于 2017-4-21 01:08 编辑

是个文本求和的工具。
求和完成后,它对原文本执行了编辑动作?还是删除原文本,并在原文本定位点上重新书写?
如是后者,请问它求取文本定位点的代码,是哪些?
这种高级代码实在看不懂,,,
















 (defun c:rt()
  (foreach a  (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "*TEXT"))))))
      (setq ed (entget a)
      txt (cdr (assoc  1 ed)))
    (entmod (subst (cons 1 (strcat "和"(vl-princ-to-string (strDecompress txt)))) (assoc 1 ed) ed))
)
 )
(defun strDecompress (string / result temp lst)
  (setq string (vl-string->list string) del ":")
  (foreach a string
     (if (or (< 47 a 58)(= 46 a))
           (setq result (cons a  result))
     (if result (setq lst (cons  result lst) result nil))
           ))
  (if result (setq lst (cons  result lst)))
  (setq aaa (apply '* (mapcar'(lambda (a) (atof (vl-list->string (reverse a)))) (reverse lst))))
  )




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

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-24 22:26:53 | 显示全部楼层
本帖最后由 newer 于 2017-2-24 22:28 编辑

你一定要先学会怎么贴代码

把你的代码放到
{pre}
{/pre}
之间, 用的时候 花括号替换成 中括号[ ]

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

使用道具 举报

 楼主| 发表于 2017-2-24 22:35:58 | 显示全部楼层
原来如此,,多谢版主newer
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-24 22:38:25 | 显示全部楼层
本帖最后由 newer 于 2017-2-24 22:39 编辑

你把代码格式化下,不会的话,执行VLIDE,进入编辑器,粘贴好你的代码,
1、CTRL+A,全选
2、按 CTRL+ALT+F
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-24 22:38:30 | 显示全部楼层

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-24 22:44:32 | 显示全部楼层

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

使用道具 举报

 楼主| 发表于 2017-2-24 22:51:50 | 显示全部楼层

学了一些基本功,不胜感激
照做了,代码版面,段落格局并未发什变更,,可能,该程序版式原本就是这样的
关于帖子主题,,,请版主指点一下可否
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-24 22:58:57 | 显示全部楼层

CTRL+A全选上你的代码,看图

QQ截图20170224225536.png

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

使用道具 举报

 楼主| 发表于 2017-2-24 23:50:03 | 显示全部楼层

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-24 23:59:15 | 显示全部楼层

代码美化,是读程序的重要基础,格式化后的代码才能看清逻辑。
代码格式化后,再谈其他的事情吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-2-25 00:15:14 | 显示全部楼层

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-25 00:28:32 | 显示全部楼层

你把代码粘错地方了,你粘的是控制台,你点 文件 菜单,新建文件, 进入编辑器里面粘贴代码,就有了。

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

使用道具 举报

 楼主| 发表于 2017-2-25 00:43:58 | 显示全部楼层

这样确实清爽多了,,多谢指点,,
(defun c:rt ()
  (foreach a (vl-remove-if
        'listp
        (mapcar 'cadr (ssnamex (ssget '((0 . "*TEXT")))))
      )
    (setq ed  (entget a)
   txt (cdr (assoc 1 ed))
    )
    (entmod
      (subst (cons 1
     (strcat "和" (vl-princ-to-string (strDecompress txt)))
      )
      (assoc 1 ed)
      ed
      )
    )
  )
)
(defun strDecompress (string / result temp lst)
  (setq string (vl-string->list string)
 del    ":"
  )
  (foreach a string
    (if (or (< 47 a 58) (= 46 a))
      (setq result (cons a result))
      (if result
 (setq lst    (cons result lst)
       result nil
 )
      )
    )
  )
  (if result
    (setq lst (cons result lst))
  )
  (setq aaa
  (apply '*
  (mapcar '(lambda (a) (atof (vl-list->string (reverse a))))
   (reverse lst)
  )
  )
  )
)

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

使用道具 举报

已领礼包: 86个

财富等级: 招财进宝

发表于 2017-2-25 11:46:32 | 显示全部楼层
确实是难得好帖啊,顶先
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-2-25 11:50:17 | 显示全部楼层
[C++] 纯文本查看 复制代码
(defun c:rt ()
  (foreach a (vl-remove-if 'listp (mapcar
                                    'cadr
                                    (ssnamex (ssget '((0 . "*TEXT"))))
                                  )
             )
    (setq ed (entget a)
          txt (cdr (assoc 1 ed))
    )
    (entmod (subst
              (cons 1 (strcat "和" (vl-princ-to-string
                                                       (strdecompress txt)
                                   )
                      )
              )
              (assoc 1 ed)
              ed
            )
    )
  )
)
(defun strdecompress (string / result temp lst)
  (setq string (vl-string->list string)
        del ":"
  )
  (foreach a string
    (if (or
          (< 47 a 58)
          (= 46 a)
        )
      (setq result (cons a result))
      (if result
        (setq lst (cons result lst)
              result nil
        )
      )
    )
  )
  (if result
    (setq lst (cons result lst))
  )
  (setq aaa (apply
              '*
              (mapcar
                '(lambda (a)
                   (atof (vl-list->string (reverse a)))
                 )
                (reverse lst)
              )
            )
  )
)


这个是用LISPLINK编辑器格式化的代码,看着感觉比VLISP的要好些,我平时常用这个,你搜索下论坛,用 LISPLINK ,下载下,这些基础的东西学扎实了要重要的多。

格式化的代码不仅仅是好看, 更重要的是能看清括号的配对情况,容易看明白前后的逻辑。 每一对括号都有个返回值给上层括号做参数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 14:20 , Processed in 0.199489 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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