明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 488|回复: 12

[提问] 如何不炸开块情况下修改改块内线形改为随块,线形比例改为100?(已经解决))

[复制链接]
发表于 2024-11-4 12:49:00 | 显示全部楼层 |阅读模式
本帖最后由 9701519 于 2024-11-4 18:34 编辑

如何不炸开块情况下修改改块内线形改为随块,线形比例改为100?

  1. (Defun c:tt (/ BLK)
  2.   (and
  3.     (setq blk (car (entsel "\n Pick Block <exit>:")))
  4.     (setq blk (vlax-ename->vla-object blk))
  5.     (vlax-property-available-p blk "effectivename")
  6.     (= (vlax-for vlo
  7.      (vla-item
  8.        (vla-get-blocks
  9.          (vla-get-activeDocument (vlax-get-acad-object))
  10.        )
  11.        (vla-get-effectivename blk)
  12.      )
  13.    (vla-put-Linetype vlo "ByBlock")
  14.    (vla-put-LinetypeScale vlo 100.)
  15.    (vla-put-Lineweight vlo acLnWtByBlock)
  16.    (vla-put-Color vlo 0)
  17.    (vla-put-Layer vlo "0")
  18.        )
  19.        (vla-update blk)
  20.     )
  21.   )
  22. )


发表于 2024-11-4 14:04:22 | 显示全部楼层
本帖最后由 kozmosovia 于 2024-11-4 14:08 编辑

代码搞复杂了

  1. (Defun c:tt (/ BLK)
  2.   (and
  3.     (setq blk (car (entsel "\n Pick Block <exit>:")))
  4.     (setq blk (vlax-ename->vla-object blk))
  5.     (vlax-property-available-p blk "effectivename")
  6.     (= (vlax-for vlo
  7.      (vla-item
  8.        (vla-get-blocks
  9.          (vla-get-activeDocument (vlax-get-acad-object))
  10.        )
  11.        (vla-get-effectivename blk)
  12.      )
  13.    (vla-put-Linetype vlo "ByBlock")
  14.    (vla-put-LinetypeScale vlo 100.)
  15.    (vla-put-Lineweight vlo "byblock")
  16.    (vla-put-Color vlo 0)
  17.    (vla-put-Layer vlo "0")
  18.        )
  19.        (vla-update blk)
  20.     )
  21.   )
  22. )


发表于 2024-11-4 13:35:39 | 显示全部楼层
  1. (DEFUN C:TT(/ e *BLCOKS e);;修改所有块内所有对象线型为随块、线型比例100
  2.   (vl-load-com)
  3.   (setq *blocks(vlax-get-property(vlax-get-property(vlax-get-acad-object)'activedocument)'blocks))
  4.   (while(setq e(TblNext "BLOCK"(not e)))
  5.     (tt(cdadr e)"byblock" 100))
  6.   )

  7. (defun tt(blkname ltpname ltpscale / blk o i);;修改指定块名内所有对象线型、线型比例
  8.   (setq blk(vlax-invoke-method *blocks 'item blkname)
  9.         i -1)
  10.   (repeat(vlax-get-property blk 'count)
  11.     (setq i(1+ i)o(vlax-invoke-method blk 'item i))
  12.     (vlax-put-property o 'Linetype ltpname)
  13.     (vlax-put-property o 'LinetypeScale ltpscale)))
 楼主| 发表于 2024-11-4 13:09:21 | 显示全部楼层

在不炸开块的情况下实现以下功能
  1. (defun C:tt( )
  2.     (setq se1(ssget))
  3.      (vl-cmdf "_change" "si" se1 "p" "lt" "byblock" "")
  4.      (vl-cmdf "_change" "si" se1 "p" "s" "1" "")
  5.      (vl-cmdf "_chprop" se1 "" "la" "0" "C" "byblock" "LW" "byblock" "")
  6. )

发表于 2024-11-4 12:50:39 | 显示全部楼层
遍历块定义改
 楼主| 发表于 2024-11-4 14:09:02 | 显示全部楼层

如何再加上以下功能:
1.框选选择需要修改的块
2.全部改0层,
3.颜色随块,
4.线宽随块,
 楼主| 发表于 2024-11-4 14:23:17 | 显示全部楼层

命令执行有点问题:
Pick Block <exit>:; 错误: 此类型的 LISP 值不能强制转换成 VARIANT:  "byblock"
发表于 2024-11-4 14:42:32 | 显示全部楼层
 楼主| 发表于 2024-11-4 15:37:16 | 显示全部楼层
panliang9 发表于 2024-11-4 14:42
看这个。
http://bbs.mjtd.com/thread-59143-1-1.html

为什么块会变大
发表于 2024-11-4 15:50:09 | 显示全部楼层
改线型比例用这个:
http://bbs.mjtd.com/thread-186469-1-1.html

还有发例图才知道为什么块会变大。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-22 19:58 , Processed in 0.205288 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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