明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 720|回复: 11

[源码] 求高手帮忙修改代码。批量修改直径改为圆心添加十字标

[复制链接]
发表于 2022-5-16 19:09 | 显示全部楼层 |阅读模式
本帖最后由 wutao8282 于 2022-5-16 20:33 编辑
  1. (defun c:tt (/ f file tmp)
  2.   (setq  f (getfiled "选择文件夹并任意选取一个文件,请先剔除无需处理文件"
  3.         "d:\"
  4.         "dwg"
  5.         0
  6.         )
  7.   f (vl-filename-directory f)
  8.   f (mapcar '(lambda (x) (strcat f "\" x))
  9.       (vl-directory-files f "*.dwg" 1)
  10.       )
  11.   )
  12.   (setq tmp (open (setq file (strcat (getenv "TEMP") "\\tmp.scr")) "w"))
  13.   (foreach n f
  14.     (write-line (strcat "_.open "" n """) tmp)
  15.     (write-line
  16.       "(setq ss (ssget "x" '((0 . "CIRCLE") (40 . 0.5))))
  17.        (repeat  (setq n (sslength ss))
  18.        (setq  en (ssname ss (setq n (1- n)))
  19.   en (entget en)
  20.   en (subst (cons 40 9) (assoc 40 en) en)
  21.   )
  22.        (entmod en)
  23.   )"
  24.       tmp
  25.       )
  26.     (write-line "_.qsave _.close" tmp)
  27.     )
  28.   (close tmp)
  29.   (command ".script" file)
  30.   (vl-file-delete file)
  31.   (princ)
  32.   )
论坛找的批量修改直径代码,跪求高手能帮忙改成圆心添加十字标,十字标的长度为10mm
发表于 2022-5-20 12:27 | 显示全部楼层
wutao8282 发表于 2022-5-19 21:14
能帮忙改成dxf格式吗?

  1. (defun c:tt (/ f file tmp)
  2.   (setq  f (getfiled "选择文件夹并任意选取一个文件,请先剔除无需处理文件"
  3.              "C:\\Temp\\1\\"
  4.              "dxf"
  5.              0
  6.            )
  7.     f (vl-filename-directory f)
  8.     f (mapcar '(lambda (x) (strcat f "\\" x))
  9.         (vl-directory-files f "*.dxf" 1)
  10.       )
  11.   )
  12.   (setq tmp (open (setq file (strcat (getenv "TEMP") "\\tmp.scr")) "w"))
  13.   (foreach n f
  14.     (write-line (strcat "_.open " n "") tmp)
  15.     (write-line "(setq ss(ssget \"x\" '((0 . \"CIRCLE\") (40 . 0.5))))" tmp)
  16.     (write-line "(if ss(repeat(setq n(sslength ss))(setq en(ssname ss(setq n(1- n)))endate(entget en)pt(cdr(assoc 10 endate)))" tmp)
  17.     (write-line "(entmake(list(cons 0\"LINE\")(cons 10(list(-(car pt)5)(cadr pt)(caddr pt)))(cons 11(list(+(car pt)5)(cadr pt)(caddr pt)))))" tmp)
  18.     (write-line "(entmake(list(cons 0\"LINE\")(cons 10(list(car pt)(-(cadr pt)5)(caddr pt)))(cons 11(list(car pt)(+(cadr pt)5)(caddr pt)))))" tmp)
  19.     (write-line "(entdel en)))" tmp)
  20.     (write-line (strcat "_.qsave dxf 16 " n " y _.close") tmp)
  21.   )
  22.   (close tmp)
  23.   (command ".script" file)
  24.   (vl-file-delete file)
  25.   (princ)
  26. )
发表于 2022-5-19 19:21 | 显示全部楼层
本帖最后由 xiaolong1487 于 2022-5-19 19:24 编辑

  1. (defun c:tt (/ f file tmp)
  2.   (setq  f (getfiled "选择文件夹并任意选取一个文件,请先剔除无需处理文件"
  3.              "C:\\Temp\\1\\"
  4.              "dwg"
  5.              0
  6.            )
  7.     f (vl-filename-directory f)
  8.     f (mapcar '(lambda (x) (strcat f "\\" x))
  9.         (vl-directory-files f "*.dwg" 1)
  10.       )
  11.   )
  12.   (setq tmp (open (setq file (strcat (getenv "TEMP") "\\tmp.scr")) "w"))
  13.   (foreach n f
  14.     (write-line (strcat "_.open " n "") tmp)
  15.     (write-line "(setq ss(ssget \"x\" '((0 . \"CIRCLE\") (40 . 0.5))))" tmp)
  16.     (write-line "(if ss(repeat(setq n(sslength ss))(setq en(ssname ss(setq n(1- n)))endate(entget en)pt(cdr(assoc 10 endate)))" tmp)
  17.     (write-line "(entmake(list(cons 0\"LINE\")(cons 10(list(-(car pt)5)(cadr pt)(caddr pt)))(cons 11(list(+(car pt)5)(cadr pt)(caddr pt)))))" tmp)
  18.     (write-line "(entmake(list(cons 0\"LINE\")(cons 10(list(car pt)(-(cadr pt)5)(caddr pt)))(cons 11(list(car pt)(+(cadr pt)5)(caddr pt)))))" tmp)
  19.     (write-line "(entdel en)))" tmp)
  20.     (write-line "_.qsave _.close" tmp)
  21.   )
  22.   (close tmp)
  23.   (command ".script" file)
  24.   (vl-file-delete file)
  25.   (princ)
  26. )
发表于 2022-5-19 18:37 | 显示全部楼层
本帖最后由 xiaolong1487 于 2022-5-19 19:24 编辑

  1. (defun c:tt (/ en endate n pt ss)
  2.         (setq ss (ssget "x" '((0 . "CIRCLE") (40 . 0.5))))
  3.         (if ss
  4.                 (repeat (setq n (sslength ss))
  5.                         (setq en (ssname ss (setq n (1- n)))
  6.                                 endate (entget en)
  7.                                 pt (cdr (assoc 10 endate))
  8.                         )
  9.                         (entmake (list '(0 . "LINE") (cons 10 (list (- (car pt) 5) (cadr pt) (caddr pt))) (cons 11 (list (+ (car pt) 5) (cadr pt) (caddr pt)))))
  10.                         (entmake (list '(0 . "LINE") (cons 10 (list (car pt) (- (cadr pt) 5) (caddr pt))) (cons 11 (list (car pt) (+ (cadr pt) 5) (caddr pt)))))
  11.                         (entdel en))               
  12.         )
  13.   (princ)
  14. )
发表于 2022-5-16 23:42 | 显示全部楼层
圆心加十字
1 可以插入一个块
2 可以绘制一个十字
3 直接用DIMCENTER  (变脸DIMCEN控制尺寸,实际长度是DIMCENTER *dimscale。所以为0的时候无法绘制)
 楼主| 发表于 2022-5-19 21:14 | 显示全部楼层

能帮忙改成dxf格式吗?
 楼主| 发表于 2022-5-20 14:37 | 显示全部楼层

谢谢!dxf是可以了,但原本的圆心加十字标记功能没了,现在等于是打开dxf再另存dxf,图纸没有发生变化
发表于 2022-5-20 15:17 | 显示全部楼层
wutao8282 发表于 2022-5-20 14:37
谢谢!dxf是可以了,但原本的圆心加十字标记功能没了,现在等于是打开dxf再另存dxf,图纸没有发生变化

你这个不是改所有圆,是只改半径为0.5的圆 (40 . 0.5)
 楼主| 发表于 2022-5-20 20:17 | 显示全部楼层
本帖最后由 wutao8282 于 2022-5-20 20:24 编辑
xiaolong1487 发表于 2022-5-20 15:17
你这个不是改所有圆,是只改半径为0.5的圆 (40 . 0.5)

原来就是改所有圆啊。在圆心加十字标,我又测试了一遍,半径0.5的圆也没有被修改
发表于 2022-5-25 18:55 | 显示全部楼层
wutao8282 发表于 2022-5-20 20:17
原来就是改所有圆啊。在圆心加十字标,我又测试了一遍,半径0.5的圆也没有被修改

自己有空调试一下了,我这没问题!要改所有直径圆去需改"(setq ss(ssget \"x\" '((0 . \"CIRCLE\") (40 . 0.5))))"为"(setq ss(ssget \"x\" '((0 . \"CIRCLE\"))))"
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-16 18:13 , Processed in 0.216015 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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