乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: pmxcad

[编程交流] 根据列表输入

[复制链接]

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:50:46 | 显示全部楼层
它用于对组件进行编号。
这些连接到机柜01和02中的模块。
地址为1000的第一个模块(主模块)只有6个输入,输入/输出模块有12个。
因此,当第一个已满时,输入/输出模块1100继续工作。如果是满的,则继续增加1200。。。。1300 .... 等
通常限制为3个输入/输出模块,但有时为7个(输入/输出1800)。
这幅画只是一个例子。在现实生活中,使用了几种类型的组件。
我希望你能从我的意图中有所了解。
测验图纸
回复

使用道具 举报

73

主题

261

帖子

195

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
375
发表于 2022-7-5 15:52:56 | 显示全部楼层
在开始研究将要发生的事情时,我认为提供的代码与我们中的一些人可能已经接近的方向不一致,因此提供了回应。
 
 
在我看来,更多的是关于控制程序的规则,你有第一次接触,
1x6 1000(满时)
1100的5x12到1500秒(满时)
第二控制器
还是1x6
然后5x12
第三名,以此类推
 
 
而不是列表答案。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 15:57:53 | 显示全部楼层
 
拼写错误?你把代码放在变量声明中了?
 
 
在我看来,如果你能写这段代码,你应该能够修改它以满足你的需要,似乎仍然无法解决它?
 
如前所述
(lim#x p);参数x应为整数或数字
但是如果您的(色调:StringCal num+i)返回一个字符串
然后,您只需要一些简单的转换atoi&itoa或rtos
 
假设您的增量限制为“1212”,接下来是“1301”,对吗?
例子:
  1. ;oflist ((1001 1 5)(1201 1 12)(1300 2 4))
  2. (setq y 0)
  3. (repeat (length oflist)
  4. (setq stnum (nth 0 (nth y oflist))
  5. (setq inc (nth 1 (nth y oflist))
  6. (setq howmany (nth 2 (nth y oflist))
  7. (repeat howmany
  8. do your attinc now
  9. .....
  10. ......
  11. ) ; repeat howmany
  12. (setq y (+ y 1))
  13. ) ; repeat

 
 
;示例:按色调递增后假设:StringCal函数
  1. ;==================================================
  2. (defun c:INCATT
  3.    ( / f str i f tag num pre post OOv
  4.       
  5. ;        *StartStr121007
  6. ;        *IncreaseN121007
  7.       
  8. [color=red]
  9. ;--------------- list PmxCAD --------------------------------------------------------------------------------------------------------------
  10. (setq lst '(1001 1002 1003 1004 1005 1006                        
  11.    1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112
  12.    1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212
  13.    1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312
  14.    1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412
  15.    1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512
  16.    1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612
  17.    1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712
  18.    1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812
  19. );lst
  20. );setq                                            this one?
  21. ;(setq lst '((1001 1 6)(1201 1 12)(1301 1 12)(1401 1 12)(1501 1 12)(1601 1 12)(1701 1 12)(1801 1 12)); or this one?
  22. )[/color]
  23. ;-----------------------------------------------------------------------------------------------------------------------------
  24.        HUE:DivideNum
  25.        HUE:memoVar
  26.        HUE:stringsubst
  27.        HUE:StringCal
  28.        HUE:start
  29.        HUE:end
  30.       
  31.        _divideStr
  32.       
  33.    )
  34.    ;-------------------------------------------------------------------------
  35.    ; Sub Function
  36.    ;-------------------------------------------------------------------------
  37.    (defun HUE:DivideNum ( str / lst s m v1 v2 i j c _NumP _Cal)
  38.        (defun _NumP ( x ) (<= 48 x 57))
  39.        (defun _Cal ( ty v )
  40.            (set v (cons (vl-list->string (reverse (eval ty))) (eval v)))
  41.            (set ty nil)
  42.        )
  43.       
  44.        (setq lst (vl-string->list str) i -1 j -1)
  45.       
  46.        (repeat (length lst)
  47.            (setq c (nth (setq i (+ i 1)) lst))
  48.            
  49.            (cond
  50.                (    (_NumP c)
  51.                    (setq s (cons c s) ) (cond ( m (_Cal 'm 'v1) (setq j (+ 1 j)))))
  52.                
  53.                (    (and (= c 46) (> i 0) (_NumP (nth (- i 1) lst)) (_NumP (nth (+ i 1) lst)))
  54.                    (setq s (cons c s))
  55.                )
  56.                (t  (setq m (cons c m))
  57.                    (cond ( s (_Cal 's 'v1) (setq v2 (cons (setq j (+ 1 j)) v2))))
  58.                )
  59.            )
  60.        )
  61.        (cond
  62.            ( m (_Cal 'm 'v1))
  63.            ( t (_Cal 's 'v1) (setq v2 (cons (setq j (+ 1 j)) v2)))
  64.        ) (list (reverse v1) (reverse v2))
  65.    )
  66.    
  67.    ;-------------------------------------------------------------------------
  68.    ; Sub Function
  69.    ;-------------------------------------------------------------------------
  70.    (defun HUE:memoVar ( va f m s / v )
  71.        (setq v (if (member (eval va) '(nil "")) s  (eval va)))
  72.        (mapcar 'princ (list "\n" m " <" v "> : "))
  73.        (set va ( f ))
  74.        (if (member(eval va) '(nil "")) (set va v)) (eval va)
  75.    )
  76.    
  77.    ;-------------------------------------------------------------------------
  78.    ; Sub Function
  79.    ;-------------------------------------------------------------------------
  80.    (defun HUE:stringsubst ( new old str / l i ) (setq l (strlen new) i 0)
  81.        (while (setq i (vl-string-search old str i))
  82.            (setq str (vl-string-subst new old str i) i (+ i l))
  83.        ) str
  84.    )
  85.    
  86.    ;-------------------------------------------------------------------------
  87.    ; Sub Function
  88.    ;-------------------------------------------------------------------------
  89.    (defun HUE:StringCal ( str f n / _GetPP data1 data2 num i DIMZIN )
  90.        (defun _GetPP ( str / lst l post pre flag )
  91.            (setq lst  (vl-remove  45 (vl-string->list str))
  92.                  post (if (setq l (member 46 lst)) (- (length l) 1) 0)
  93.                  pre  (if (setq l (member 46 (reverse lst))) (- (length l) 1) (length lst))
  94.                  flag (minusp (atof str))
  95.            ) (list pre post flag)
  96.        )
  97.       
  98.        (setq DIMZIN (getvar 'DIMZIN))
  99.       
  100.        (setvar 'DIMZIN 0)
  101.        (setq data1 (_GetPP str)
  102.              num   (vl-string->list (rtos (f (atof str) n) 2 (cadr data1)))
  103.              data2 (_GetPP (vl-list->string num))
  104.              num   (vl-remove 45 num)
  105.        )
  106.        (setvar 'DIMZIN DIMZIN)
  107.        (if (< 0 (setq i (- (car  data1) (car  data2))))
  108.            (repeat i (setq num (cons 48 num)))
  109.        )
  110.        (if (< 0 (setq i (- (cadr data1) (cadr data2))))
  111.            (repeat i (setq num (append num '(48))))
  112.        )
  113.        (if (caddr data2) (setq num (cons 45 num)))
  114.        (vl-list->string num)
  115.    )
  116.    
  117.    ;-------------------------------------------------------------------------
  118.    ; Sub Function
  119.    ;-------------------------------------------------------------------------
  120.    (defun HUE:start( lst )
  121.        (vla-startundomark (HUE:end nil))
  122.        (list lst (mapcar 'getvar lst))
  123.    )
  124.    
  125.    ;-------------------------------------------------------------------------
  126.    ; Sub Function
  127.    ;-------------------------------------------------------------------------
  128.    (defun HUE:end ( d / doc )
  129.        (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  130.        (and (cadr d) (mapcar 'setvar (car d) (cadr d)))
  131.        (if (= 8 (logand 8 (getvar 'UNDOCTL))) (vla-endundomark doc)) doc
  132.    )
  133.    
  134.    ;-------------------------------------------------------------------------
  135.    ; Sub Function
  136.    ;-------------------------------------------------------------------------
  137.    (defun _divideStr ( str / data i j k pre post )
  138.        (setq data (HUE:DivideNum str)
  139.              k    (last (cadr data))
  140.              j    0
  141.              pre  ""
  142.              post ""
  143.        )
  144.       
  145.        (foreach s (car data)
  146.            (cond
  147.                (    (< j k) (setq pre (strcat pre  s)))
  148.                (    (> j k) (setq post(strcat post s)))
  149.                (    (= j k) (setq i s))
  150.            )
  151.            (setq j (+ 1 j))
  152.        )
  153.        (list pre i post)
  154.    )
  155.    
  156.    ;-------------------------------------------------------------------------
  157.    ; Error Function
  158.    ;-------------------------------------------------------------------------
  159.    (defun *error* (s)
  160.        (if OOv (HUE:End OOv)) (princ s)
  161.    )
  162.    ;-----------------------------------------------------------------------------------
  163.    ; Main Function                                                                     
  164.    ;-----------------------------------------------------------------------------------
  165.   [color=red] ;(setq str  (HUE:MemoVar '*StartStr121007  getstring "StartString  " "100");-----------------------------------------
  166. [/color]
  167. [color=red]
  168. ;--------------- Example code BIGAL----------------------------------------------------------------------------------------
  169. ;oflist ((1001 1 5)(1201 1 12)(1300 2 4))
  170. (setq y 0)
  171. (repeat (length oflist)
  172. (setq stnum (nth y (nth 0 oflist))
  173. (setq inc (nth y (nth 1 oflist))
  174. (setq howmany (nth y (nth 2 oflist))
  175. (repeat howmany
  176. do your attinc now
  177. .....
  178. ......
  179. ) ; repeat howmany
  180. (setq y (+ y 1))
  181. ) ; repeat
  182. ;-----------------------------------------------------------------------------------------------------------------------------[/color]
  183.          i    1
  184.          OOv  (HUE:Start '(DIMZIN))
  185.    )
  186.    
  187.    (and
  188.        (vl-string-search "," str)
  189.        (setq str (HUE:StringSubst "." "," str)  f t)
  190.    )
  191.    
  192.    (mapcar 'set '(pre num post) (_DivideStr str))
  193.    (setq tag  "TEXT1"
  194.          num  (HUE:StringCal num - i)
  195.    )
  196.    (setvar 'ERRNO 0)
  197.    (setvar 'DIMZIN
  198.    (while (= 0 (getvar 'ERRNO))
  199.        (and
  200.            (setq o (ssget "_+.:E:S:L" '((0 . "INSERT") (66 . 1))))
  201.    ;(C:PUTA);------------------------------------------------------put locationcode-----------------------------------
  202.            (vl-some
  203.                '(lambda ( att )
  204.                    (if (= tag (vla-get-tagstring att))
  205.                                  (progn
  206.                            (setq num (HUE:StringCal num + i)
  207.                                  str (strcat pre num post)
  208.                            )
  209.         (if f (setq str (HUE:StringSubst "," "." str)))
  210.                            (vla-put-textstring att str)
  211.                        )
  212.                    )
  213.                ) (vlax-invoke (vlax-ename->vla-object (ssname o 0)) 'getattributes)
  214.            )
  215.        )
  216.    )
  217.    (HUE:End OOv)
  218.    (princ)
  219. )(vl-load-com)
回复

使用道具 举报

73

主题

261

帖子

195

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
375
发表于 2022-7-5 16:02:42 | 显示全部楼层
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:05:06 | 显示全部楼层
Starting to work out what is meant to happen I think the code provided is not in the same direction as say some of us would have approached hence the responses provided.
 
 
It seems to me to be more about the rules controlling the procedure, you have the first contact,
1x6 1000's when full
1100's 5x12 up to 1500,s when full
2nd controller
again 1x6
then 5x12
3rd and so on
 
 
Rather than a list answer.
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:11:35 | 显示全部楼层
 
typos? you put the code in variable declaration?
 
 
IMO if you could write this code, you should be able to modify it to suit your needs seems still can't solve it?
 
as mentioned
(lim# x p) ;argument x, should be integer or a number
but if your (HUE:StringCal num + i) returns a string
then you just need some simple conversion atoi & itoa or rtos
 
assume your increment limits "1212", next will be "1301" right?
example:
  1. (setq num [color="purple"]"1212"[/color])(setq num ([color="blue"]HUE:StringCal[/color] num + i) [color="green"];output num as string[/color]     x          ([color="blue"]lim#[/color] (atoi num) [color="blue"]NIL[/color]) [color="green"]; convert num to integer[/color]     num (itoa x) [color="green"];convert back to string [/color]     str (strcat pre num post) [color="green"]; returns as string concatenate [/color]      )
 
 
;example : assume after increment by HUE:StringCal function
  1. (setq num [color="purple"]"1213"[/color])(setq x ([color="blue"]lim#[/color] ([color="blue"]atoi[/color] num) [color="blue"]nil[/color])) [color="green"]; apply my function [/color](setq num (itoa x)) [color="green"]; "[color="red"][b]1301[/b][/color]" new value as string [/color]
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 23:32 , Processed in 1.366035 second(s), 73 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表