明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 惜惜2

[提问] 求个大佬帮忙看下红色处的代码,研究找不到原因

[复制链接]
 楼主| 发表于 2024-10-7 16:15:11 | 显示全部楼层
kozmosovia 发表于 2024-10-7 16:01
(if (setq space-pos (vl-string-search " " filename))
文件名带有空格才会执行后面的代码

文件名这些格式都是对的  因为需要判断空格去循环以及填入属性值
发表于 2024-10-7 16:27:44 | 显示全部楼层
瞎JB扯,你的代码对你给的DWG,执行个鬼。
提问都给埋坑,还是自己琢磨消磨下自己时间比较好。
发表于 2024-10-7 16:35:21 | 显示全部楼层
本帖最后由 ljpnb 于 2024-10-7 17:15 编辑
  1. (defun c:test ()
 楼主| 发表于 2024-10-7 16:36:32 | 显示全部楼层
kozmosovia 发表于 2024-10-7 16:27
瞎JB扯,你的代码对你给的DWG,执行个鬼。
提问都给埋坑,还是自己琢磨消磨下自己时间比较好。

你用这个LISP试下  我加载是可以的  只有最后一步代码实现不了

本帖子中包含更多资源

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

x
发表于 2024-10-7 16:39:17 | 显示全部楼层
attribname:如果“客户”在“产品编码”之前时就会出错
 楼主| 发表于 2024-10-7 16:42:36 | 显示全部楼层
ljpnb 发表于 2024-10-7 16:39
attribname:如果“客户”在“产品编码”之前时就会出错

谢谢,我再研究一下 ,上面的代码提示语法错误
发表于 2024-10-7 17:16:00 | 显示全部楼层

  1. (defun c:test ()
  2.   (setq e1 nil)
  3.   (setq filename (vl-filename-base (getvar "dwgname")))
  4.   (if (setq space-pos (vl-string-search " " filename))
  5.     (progn
  6.       (setq drawing-number (substr filename 1 space-pos))
  7.       (setq part-name (substr filename (+ space-pos 2)))
  8.       (setq ss (ssget "x" '((0 . "INSERT"))))
  9.       (repeat (setq n (sslength ss))
  10.         (setq blockref (SSNAME SS (setq n (1- n))))
  11.         (setq blockref (vlax-ename->vla-object blockref))
  12.         (if (= (vla-get-HasAttributes blockref) :vlax-true)
  13.           (progn
  14.             (foreach attrib
  15.                      (VLAX-SAFEARRAY->LIST
  16.                        (VLAX-VARIANT-VALUE (vla-getattributes blockref))
  17.                      )
  18.               (if (= (vla-get-tagstring attrib) "产品编码")
  19.                 (setq e1 (vla-get-textstring attrib))

  20.               )
  21.             )
  22.             (setq E2 (substr E1 2 3))
  23.             (foreach attrib
  24.                      (VLAX-SAFEARRAY->LIST
  25.                        (VLAX-VARIANT-VALUE (vla-getattributes blockref))
  26.                      )
  27.               (setq attribname (vla-get-tagstring attrib))
  28.               (cond ((wcmatch attribname "客户图号")
  29.                      (vla-put-textstring attrib drawing-number)
  30.                     )
  31.                     ((wcmatch attribname "零件名称")
  32.                      (vla-put-textstring attrib part-name)
  33.                     )
  34.                     ((and
  35.                        (wcmatch attribname "设计日期")
  36.                        (= (vla-get-textstring attrib) "")
  37.                      )
  38.                      (vla-put-textstring
  39.                        attrib
  40.                        (menucmd "m=$(edtime,$(getvar,DATE),yyyy-mo-dd)")
  41.                      )
  42.                     )
  43.                     ((wcmatch attribname "客户")
  44.                      (vla-put-textstring attrib E2)
  45.                     )
  46.               )
  47.             )
  48.           )
  49.         )
  50.       )
  51.     )
  52.   )
  53.   (princ)
  54. )
 楼主| 发表于 2024-10-7 17:23:31 | 显示全部楼层

可以了 这是增加了先判断不为空值吗
发表于 2024-10-7 17:34:21 | 显示全部楼层
本帖最后由 ljpnb 于 2024-10-7 17:35 编辑
惜惜2 发表于 2024-10-7 17:23
可以了 这是增加了先判断不为空值吗

是的,先取值
平时很少用到属性块,也学习了一下
 楼主| 发表于 2024-10-10 10:19:09 | 显示全部楼层
本帖最后由 惜惜2 于 2024-10-10 14:22 编辑

ljpnb 发表于 2024-10-7 17:34
是的,先取值
平时很少用到属性块,也学习了一下
  1. (setq E1 nil)
  2. (setq E3 nil)
  3. (setq filename (vl-filename-base (getvar "dwgname")))
  4. (if (setq space-pos (vl-string-search " " filename))
  5.   (progn
  6.     (setq drawing-number (substr filename 1 space-pos))
  7.     (setq part-name (substr filename (+ space-pos 2)))
  8.     (setq ss (ssget "x" '((0 . "INSERT"))))
  9.     (repeat (setq n (sslength ss))
  10.       (setq blockref (SSNAME SS (setq n (1- n))))
  11.       (setq blockref (vlax-ename->vla-object blockref))
  12.       (if (= (vla-get-HasAttributes blockref) :vlax-true)
  13.   (progn
  14.     (foreach attrib
  15.        (VLAX-SAFEARRAY->LIST
  16.          (VLAX-VARIANT-VALUE (vla-getattributes blockref))
  17.        )
  18.       (if  (or (= (vla-get-tagstring attrib) "产品编码")
  19.                     (= (vla-get-tagstring attrib) "编号"))
  20.         (setq e1 (vla-get-textstring attrib))
  21.       )
  22.     )
  23.     (setq E2 (substr E1 2 3))
  24.     (foreach attrib
  25.        (VLAX-SAFEARRAY->LIST
  26.          (VLAX-VARIANT-VALUE (vla-getattributes blockref))
  27.        )
  28.       (if(and(= (vla-get-tagstring attrib) "设计日期")(not (equal (vla-get-textstring attrib) "")))
  29.         (setq E3 (vl-prin1-to-string (vla-get-textstring attrib)))
  30.       )
  31.      )
  32.           (if E3
  33.             (setq e3-length (length E3))
  34.             )
  35.           (if E3
  36.             (if (>= e3-length 8)
  37.               (setq E4 (strcat (substr E3 0 4) "-" (substr E3 4 2) "-" (substr E3 6 2)))
  38.               (setq E4 nil))
  39.           )
  40.           (foreach attrib
  41.        (VLAX-SAFEARRAY->LIST
  42.          (VLAX-VARIANT-VALUE (vla-getattributes blockref))
  43.        )
  44.       (cond ((= (vla-get-tagstring attrib) "客户图号")
  45.        (vla-put-textstring attrib drawing-number)
  46.       )
  47.       ((= (vla-get-tagstring attrib) "零件名称")
  48.        (vla-put-textstring attrib part-name)
  49.       )
  50.       ((and(= (vla-get-tagstring attrib) "设计日期")
  51.                        (equal (vla-get-textstring attrib) ""))
  52.                    (if E4
  53.                      (vla-put-textstring attrib E4)
  54.                      (vla-put-textstring attrib (menucmd "m=$(edtime,$(getvar,DATE),yyyy-mo-dd)")))
  55.       )
  56.       ((= (vla-get-tagstring attrib) "客户")
  57.         (vla-put-textstring attrib E2)
  58.       )  
  59.       )
  60.     )
  61.   )
  62.       )
  63.     )
  64.   )
  65. )
  66. (princ)


   有时间帮忙看下这个吗,假设属性值不为空时,赋值给E3并转换格式再赋值给E4这里有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 05:22 , Processed in 0.168479 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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