找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 634|回复: 3

[原创] 校核lsp中的变量

[复制链接]

已领礼包: 199个

财富等级: 日进斗金

发表于 2020-6-11 14:49:29 | 显示全部楼层 |阅读模式

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

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

×
在txt文档中写的lsp程序,在变量较多时,校核变量是一件费时费力,也挺头疼的事。
即使在将lsp程序加载到vlide里面自动提取,但与手写的比较起来也挺费事。
下面的程序可以帮助缓解一下校核变量的烦恼。
  1. (defun c:tt(/ str1 str2 lst1 lst2 lst-a lst-b lst-c)
  2.         (defun get::lst(str)
  3.                 (mapcar
  4.                         '(lambda(x)
  5.                                 (strcase x t)
  6.                         )
  7.                         (xdrx_string_sort (xdrx_string_regexps "[a-z\\-\\0-9]+" str))
  8.                 );;;mapcar
  9.         );;;defun
  10.         (if (and (setq str1 (xdrx_ui_getstring "字符串输入" "输入vlide提取的字符串:"))(setq str2 (xdrx_ui_getstring "字符串输入" "输入lsp中的字符串:")))
  11.                 (progn
  12.                         (setq lst1 (get::lst str1)
  13.                                 lst2 (get::lst str2)
  14.                         );;;setq
  15.                         (setq lst-a
  16.                                 (vl-remove-if
  17.                                         '(lambda(x)
  18.                                                 (vl-position x lst2)
  19.                                         )
  20.                                         lst1
  21.                                 );;;vl
  22.                                 lst-b
  23.                                 (vl-remove-if
  24.                                         '(lambda(x)
  25.                                                 (vl-position x lst1)
  26.                                         )
  27.                                         lst2
  28.                                 );;;vl
  29.                                 lst-c
  30.                                 (xd::list:dup lst2)
  31.                         );;;setq
  32.                         (if lst-a
  33.                                 (xdrx_prompt "\nvlide中多余的变量表为: (" (XD::List->String lst-a " ") ") \n")
  34.                         );;;if
  35.                         (if lst-b
  36.                                 (xdrx_prompt "\nlsp中多余的变量表为: (" (XD::List->String lst-b " ") ") \n")
  37.                         );;;if
  38.                         (if (and (not lst-a) (not lst-b))
  39.                                 (xdrx_prompt "\nvlide与lsp中的变量相同\n")
  40.                         );;;if
  41.                         (if lst-c
  42.                                 (xdrx_prompt "\nlsp中有重复的变量为: (" (XD::List->String lst-c " ") ") \n")
  43.                         );;;if
  44.                 );;;progn
  45.         );;;if
  46.         (princ)
  47. );;;defun






评分

参与人数 1D豆 +20 收起 理由
XDSoft + 20 很给力!经验;技术要点;资料分享奖!.

查看全部评分

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

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 199个

财富等级: 日进斗金

 楼主| 发表于 2020-6-11 16:26:36 | 显示全部楼层
比如:下面这段程序变量就挺多的
  1. (mapcar
  2.                                         '(lambda(x / lst-sp lst-d-gj-sp b-sp h-sp lst-jmq-sp lst-fjmq-sp lst-hxq-sp
  3.                                                         lst-d-gj-fj lst1-gj-fj lst1-hxq-fj lst1-gj-sp lst1-hxq-sp
  4.                                                         jmq-sp jmq-sp-min jmq-sp-max fjmq-sp fjmq-sp-min fjmq-sp-max hxq-sp hxq-sp-min hxq-sp-max
  5.                                                         lst-js b-js h-js jmq-js fjmq-js hxq-js e-bk)
  6.                                                 (if (setq lst-sp (assoc (car x) lst-tab))
  7.                                                         (progn
  8.                                                                 (setq lst-d-gj-sp (last lst-sp);;;箍筋及核心区详图实配值(强度值、直径、间距)
  9.                                                                         lst-sp (cdr lst-sp);;;去掉开始一位
  10.                                                                         lst-sp (reverse (cdr (reverse lst-sp)));;;去掉结尾一位
  11.                                                                         b-sp (car lst-sp)
  12.                                                                         h-sp (cadr lst-sp)
  13.                                                                         lst-jmq-sp (caddr lst-sp)
  14.                                                                         lst-fjmq-sp (nth 3 lst-sp)
  15.                                                                         lst-hxq-sp (last lst-sp)
  16.                                                                 );;;setq
  17.                                                                 ;;;根据平面图中的附加箍筋、附加核心区箍筋修改箍筋、核心区表(涉及强度等级问题,加上)
  18.                                                                 (if (setq lst-d-gj-fj (last x))
  19.                                                                         (progn
  20.                                                                                 ;;;下面四个均带有强度等级值
  21.                                                                                 (setq lst1-gj-fj (cdr (assoc "GJ-FJ" lst-d-gj-fj))
  22.                                                                                         lst1-hxq-fj (cdr (assoc "HXQ-FJ" lst-d-gj-fj))
  23.                                                                                         lst1-gj-sp (cdr (assoc "GJ-SP" lst-d-gj-sp))
  24.                                                                                         lst1-hxq-sp (cdr (assoc "HXQ-SP" lst-d-gj-sp))
  25.                                                                                 );;;setq
  26.                                                                                 (cond
  27.                                                                                         ((and (not lst1-gj-fj) lst1-hxq-fj);;;无附加箍筋、有附加核心区箍筋
  28.                                                                                                 (cond
  29.                                                                                                         ((not lst1-hxq-sp);;;无实配的核心区箍筋,有实配箍筋
  30.                                                                                                                 (setq lst-hxq-sp (gj_hxq_th lst1-hxq-fj lst1-gj-sp lst-hxq-sp "hxq"))                                       
  31.                                                                                                         );;;cond1
  32.                                                                                                         ;;;有实配的核心区箍筋,有实配箍筋
  33.                                                                                                         (t
  34.                                                                                                                 (setq lst-hxq-sp (gj_hxq_th lst1-hxq-fj lst1-hxq-sp lst-hxq-sp "hxq"))
  35.                                                                                                         );;;cond2
  36.                                                                                                 );;;cond
  37.                                                                                         );;;cond1
  38.                                                                                         ((and lst1-gj-fj (not lst1-hxq-fj));;;有附加箍筋、无附加核心区箍筋
  39.                                                                                                 (cond
  40.                                                                                                         ((not lst1-hxq-sp);;;无实配的核心区箍筋,有实配箍筋
  41.                                                                                                                 (setq lst-jmq-sp (gj_hxq_th lst1-gj-fj lst1-gj-sp lst-jmq-sp "jmq")
  42.                                                                                                                         lst-fjmq-sp (gj_hxq_th lst1-gj-fj lst1-gj-sp lst-fjmq-sp "fjmq")
  43.                                                                                                                         lst-hxq-sp lst-jmq-sp
  44.                                                                                                                 );;;setq                                       
  45.                                                                                                         );;;cond1
  46.                                                                                                         ;;;有实配的核心区箍筋,有实配箍筋
  47.                                                                                                         (t
  48.                                                                                                                 (setq lst-jmq-sp (gj_hxq_th lst1-gj-fj lst1-gj-sp lst-jmq-sp "jmq")
  49.                                                                                                                         lst-fjmq-sp (gj_hxq_th lst1-gj-fj lst1-gj-sp lst-fjmq-sp "fjmq")
  50.                                                                                                                 );;;setq
  51.                                                                                                         );;;cond2
  52.                                                                                                 );;;cond
  53.                                                                                         );;;cond2
  54.                                                                                         ((and lst1-gj-fj lst1-hxq-fj);;;有附加箍筋、有附加核心区箍筋
  55.                                                                                                 (cond
  56.                                                                                                         ((not lst1-hxq-sp);;;无实配的核心区箍筋,有实配箍筋
  57.                                                                                                                 (setq lst-jmq-sp (gj_hxq_th lst1-gj-fj lst1-gj-sp lst-jmq-sp "jmq")
  58.                                                                                                                         lst-fjmq-sp (gj_hxq_th lst1-gj-fj lst1-gj-sp lst-fjmq-sp "fjmq")
  59.                                                                                                                         lst-hxq-sp (gj_hxq_th lst1-hxq-fj lst1-gj-sp lst-hxq-sp "hxq")
  60.                                                                                                                 );;;setq                                       
  61.                                                                                                         );;;cond1
  62.                                                                                                         ;;;有实配的核心区箍筋,有实配箍筋
  63.                                                                                                         (t
  64.                                                                                                                 (setq lst-jmq-sp (gj_hxq_th lst1-gj-fj lst1-gj-sp lst-jmq-sp "jmq")
  65.                                                                                                                         lst-fjmq-sp (gj_hxq_th lst1-gj-fj lst1-gj-sp lst-fjmq-sp "fjmq")
  66.                                                                                                                         lst-hxq-sp (gj_hxq_th lst1-hxq-fj lst1-hxq-sp lst-hxq-sp "hxq")
  67.                                                                                                                 );;;setq
  68.                                                                                                         );;;cond2
  69.                                                                                                 );;;cond        
  70.                                                                                         );;;cond3
  71.                                                                                 );;;cond
  72.                                                                          );;;progn        
  73.                                                                 );;;if
  74.                                                                 (if (apply '= lst-jmq-sp)
  75.                                                                         (setq jmq-sp (car lst-jmq-sp))
  76.                                                                         (setq jmq-sp-min (car lst-jmq-sp)
  77.                                                                                 jmq-sp-max (cadr lst-jmq-sp)
  78.                                                                         );;;setq
  79.                                                                 );;;if
  80.                                                                 (if (apply '= lst-fjmq-sp)
  81.                                                                         (setq fjmq-sp (car lst-fjmq-sp))
  82.                                                                         (setq fjmq-sp-min (car lst-fjmq-sp)
  83.                                                                                 fjmq-sp-max (cadr lst-fjmq-sp)
  84.                                                                         );;;setq
  85.                                                                 );;;if
  86.                                                                 (if (apply '= lst-hxq-sp)
  87.                                                                         (setq hxq-sp (car lst-hxq-sp))
  88.                                                                         (setq hxq-sp-min (car lst-hxq-sp)
  89.                                                                                 hxq-sp-max (cadr lst-hxq-sp)
  90.                                                                         );;;setq
  91.                                                                 );;;if
  92.                                                                 (setq lst-js (cadr x)
  93.                                                                         e-bk (car lst-js)
  94.                                                                         lst-js (cdr lst-js)
  95.                                                                         b-js (car lst-js)
  96.                                                                         h-js (cadr lst-js)
  97.                                                                         jmq-js (caddr lst-js)
  98.                                                                         fjmq-js (nth 3 lst-js)
  99.                                                                         hxq-js (last lst-js)
  100.                                                                 );;;setq
  101.                                                                 (if (< b-sp (- b-js 153.))
  102.                                                                         (setq lst-b (cons e-bk lst-b))
  103.                                                                 );;;if
  104.                                                                 (if (< h-sp (- h-js 153.))
  105.                                                                         (setq lst-h (cons e-bk lst-h))
  106.                                                                 );;;if
  107.                                                                 (if jmq-sp
  108.                                                                         (if (< jmq-sp (- jmq-js 50.24))
  109.                                                                                 (setq lst-jmq (cons e-bk lst-jmq))
  110.                                                                         );;;if
  111.                                                                         (if (< jmq-sp-max (- jmq-js 50.24))
  112.                                                                                 (setq lst-jmq (cons e-bk lst-jmq))
  113.                                                                                 (if (< jmq-sp-min (- jmq-js 50.24))
  114.                                                                                         (setq lst-jmq-min (cons e-bk lst-jmq-min))
  115.                                                                                 );;;if
  116.                                                                         );;;if
  117.                                                                 );;;if
  118.                                                                 (if fjmq-sp
  119.                                                                         (if (< fjmq-sp (- fjmq-js 50.24))
  120.                                                                                 (setq lst-fjmq (cons e-bk lst-fjmq))
  121.                                                                         );;;if
  122.                                                                         (if (< fjmq-sp-max (- fjmq-js 50.24))
  123.                                                                                 (setq lst-fjmq (cons e-bk lst-fjmq))
  124.                                                                                 (if (< fjmq-sp-min (- fjmq-js 50.24))
  125.                                                                                         (setq lst-fjmq-min (cons e-bk lst-fjmq-min))
  126.                                                                                 );;;if
  127.                                                                         );;;if
  128.                                                                 );;;if
  129.                                                                 (if hxq-sp
  130.                                                                         (if (< hxq-sp (- hxq-js 50.24))
  131.                                                                                 (setq lst-hxq (cons e-bk lst-hxq))
  132.                                                                         );;;if
  133.                                                                         (if (< hxq-sp-max (- hxq-js 50.24))
  134.                                                                                 (setq lst-hxq (cons e-bk lst-hxq))
  135.                                                                                 (if (< hxq-sp-min (- hxq-js 50.24))
  136.                                                                                         (setq lst-hxq-min (cons e-bk lst-hxq-min))
  137.                                                                                 );;;if
  138.                                                                         );;;if
  139.                                                                 );;;if
  140.                                                         );;;progn
  141.                                                         (setq lst-no-xt (cons (car x) lst-no-xt));;;无详图的编号表
  142.                                                 );;;if
  143.                                         );;;lambda
  144.                                         lst-pm
  145.                                 );;;mapcar

这个里面的变量是否同程序中一致呢,挺难校核的
'(lambda(x / lst-sp lst-d-gj-sp b-sp h-sp lst-jmq-sp lst-fjmq-sp lst-hxq-sp
                                                        lst-d-gj-fj lst1-gj-fj lst1-hxq-fj lst1-gj-sp lst1-hxq-sp
                                                        jmq-sp jmq-sp-min jmq-sp-max fjmq-sp fjmq-sp-min fjmq-sp-max hxq-sp hxq-sp-min hxq-sp-max
                                                        lst-js b-js h-js jmq-js fjmq-js hxq-js e-bk)

首先打开_vlide,新建文件,复制黏贴代码
编辑->全部选定->检查选定代码
复制黏贴; 全局变量: (B-JS B-SP E-BK FJMQ-JS FJMQ-SP FJMQ-SP-MAX FJMQ-SP-MIN H-JS H-SP HXQ-JS HXQ-SP HXQ-SP-MAX HXQ-SP-MIN JMQ-JS JMQ-SP JMQ-SP-MAX JMQ-SP-MIN LST-B LST-D-GJ-FJ LST-D-GJ-SP LST-FJMQ LST-FJMQ-MIN LST-FJMQ-SP LST-H LST-HXQ LST-HXQ-MIN LST-HXQ-SP LST-JMQ LST-JMQ-MIN LST-JMQ-SP LST-JS LST-NO-XT LST-PM LST-SP LST-TAB LST1-GJ-FJ LST1-GJ-SP LST1-HXQ-FJ LST1-HXQ-SP X)
; 检查完成.  作为第一个str1的文字,
str2就是lsp程序中'(lambda(x/ ) 里面的变量
这样就能够自动比较了。


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

使用道具 举报

已领礼包: 1336个

财富等级: 财源广进

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 00:19 , Processed in 0.194536 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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