找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1254|回复: 10

[求助] lisp问题

[复制链接]
发表于 2013-12-26 19:51:43 | 显示全部楼层 |阅读模式

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

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

×
在处理梁箍筋值时,例如g1.0-0.5。怎么通过lisp语言将1.0和0.5分别提取出来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-12-26 20:05:34 | 显示全部楼层
命令: (XD::STRING:REGEXPS "[0-9]+[^-]+" "G1.0-0.5" "")
("1.0" "0.5")


函数XD::STRING:REGEXPS源码在 “函数发布”里面,自己去找下。

点评

我想要的效果是能把这两个数字提取出来,分别将他们赋值给两个变量  详情 回复 发表于 2013-12-27 15:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-27 15:37:21 | 显示全部楼层
newer 发表于 2013-12-26 20:05
命令: (XD::STRING:REGEXPS "[0-9]+[^-]+" "G1.0-0.5" "")
("1.0" "0.5")

我想要的效果是能把这两个数字提取出来,分别将他们赋值给两个变量

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-12-27 16:17:08 | 显示全部楼层
龙猫牛逼 发表于 2013-12-27 15:37
我想要的效果是能把这两个数字提取出来,分别将他们赋值给两个变量

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-27 16:28:19 | 显示全部楼层
(mapcar 'set '(dat1 dat2) (mapcar 'distof (XD::STRING:REGEXPS "[0-9]+[^-]+" "G1.0-0.5" "")))

点评

(defun XD::String:RegExpS (pat str key / end keys matches x) (if (not *xxvbsexp) (setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp")) ) (vlax-put *xxvbsexp 'Pattern pat) (if (  详情 回复 发表于 2013-12-30 11:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-30 11:42:40 | 显示全部楼层
st788796 发表于 2013-12-27 16:28
(mapcar 'set '(dat1 dat2) (mapcar 'distof (XD::STRING:REGEXPS "[0-9]+[^-]+" "G1.0-0.5" "")))

(defun XD::String:RegExpS (pat str key / end keys matches x)
  (if (not *xxvbsexp)
    (setq *xxvbsexp (vlax-get-or-create-object "VBScript.RegExp"))
)
(vlax-put *xxvbsexp 'Pattern pat)
  (if (not key)
    (setq key "")
  )
  (setq key (strcase key))
  (setq keys '(("I" "IgnoreCase") ("G" "Global")
         ("M" "Multiline")
        )
  )
  (mapcar
    '(lambda (x)
       (if (wcmatch key (strcat "*" (car x) "*"))
         (vlax-put *xxvbsexp (read (cadr x)) 0)
         (vlax-put *xxvbsexp (read (cadr x)) -1)
       )
     )
    keys
  )
  (setq matches (vlax-invoke *xxvbsexp 'Execute str))
  (vlax-for x matches (setq end (cons (vla-get-value x) end)))
  (reverse end)
)
(defun c:gj (/ f2-layer-0 f2-layer ss i n f2-ss f2-ir)
  (setq f2-layer-0 (car (entsel "\n请选择对象图层:")))
  (setq f2-layer (cdr (assoc 8 (entget f2-layer-0))))
  (princ "\n请选择对象:")
  (setq ss (ssget (list '(0 . "text") (cons 8 f2-layer))))
  (setq        i     0
        n     (sslength ss)
        f2-ss (ssadd)
  )
  (setq da1 (getreal "请输入小于的数值:"))
  (setq da2 (getreal "请输入小于的数值:"))
  (while (< i n)
    (setq f2-real (ssname ss i))
    (mapcar 'set'(dat1 dat2)(mapcar'distof (XD::string:regexps"[0-9]+[^-]+" f2-real)))
    (if        (and(<= (atof dat1) da1) (<= (atof dat2) da2))
      (setq f2-ss (ssadd (ssname ss i) f2-ss))
    )
    (setq i (1+ i))
  )
  (command "erase" f2-ss "")
)



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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-30 13:58:11 | 显示全部楼层
龙猫牛逼 发表于 2013-12-30 11:42
(defun XD::String:RegExpS (pat str key / end keys matches x)
  (if (not *xxvbsexp)
    (setq *xx ...

  1. (defun c:gj (/ e ss da1 da2 l)
  2.   (if
  3.     (and (setq e (car (xdrx_entsel "\n请选择对象图层:" '((0 . "text")))))
  4.          (progn        (princ "\n请选择对象:")
  5.                 (setq ss (ssget (list '(0 . "text") (xdrx_getentdxf 8))))
  6.          )
  7.          (setq da1 (getreal "请输入小于的数值:"))
  8.          (setq da2 (getreal "请输入小于的数值:"))
  9.          (setq l (list da1 da2))
  10.     )
  11.      (mapcar '(lambda (x / str lst)
  12.                 (setq str (xdrx_getpropertyvalue x "Textstring")
  13.                       lst (mapcar 'distof (XD::string:regexps "[0-9]+[^-]+" str))
  14.                 )
  15.                 (if (vl-every '<= lst l)
  16.                   (xdrx_entity_delete x)
  17.                 )
  18.               )
  19.              (xdrx_pickset->ents ss)
  20.      )
  21.   )
  22.   (princ)
  23. )

点评

我之前编写的问题应该在于cad文本怎么转化成字符串用于XD::String:RegExpS函数,然后再怎么将输入的数与XD::String:RegExpS 提取出的数字进行比较  详情 回复 发表于 2013-12-30 16:01
你好。。。你编的这个运行不了啊。我想实现的是。。cad中一个图层中有很多“g1.0-0.5”这类的文本。。提取出数字与输入的数字比大小。。。如果小就删掉文本。。。我之前编的应该有很多问题。。我是菜鸟。。还望指导  详情 回复 发表于 2013-12-30 15:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-12-30 15:36:06 | 显示全部楼层

你好。。。你编的这个运行不了啊。我想实现的是。。cad中一个图层中有很多“g1.0-0.5”这类的文本。。提取出数字与输入的数字比大小。。。如果小就删掉文本。。。我之前编的应该有很多问题。。我是菜鸟。。还望指导

点评

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

使用道具 举报

 楼主| 发表于 2013-12-30 16:01:30 | 显示全部楼层

我之前编写的问题应该在于cad文本怎么转化成字符串用于XD::String:RegExpS函数,然后再怎么将输入的数与XD::String:RegExpS 提取出的数字进行比较
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-12-30 16:20:42 | 显示全部楼层
龙猫牛逼 发表于 2013-12-30 15:36
你好。。。你编的这个运行不了啊。我想实现的是。。cad中一个图层中有很多“g1.0-0.5”这类的文本。。提 ...

需要加载 XDRXAPI

点评

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

使用道具 举报

 楼主| 发表于 2013-12-30 16:50:44 来自手机 | 显示全部楼层
st788796 发表于 2013-12-30 16:20
需要加载 XDRXAPI

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 02:22 , Processed in 0.400667 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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