乐筑天下

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

[编程交流] 从当前位置移动标题栏

[复制链接]

1

主题

1

帖子

0

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 16:25:22 | 显示全部楼层 |阅读模式
您好,我最近开始使用LISP代码。以下是我需要在标题栏位于模型空间的现有图形中使用LISP例程所做的操作。
 
 
1、全选
2、移动
3、指定基点:
4.指定第二个点:0,0
 
 
这将移动整个图形对象,并将标题栏的左下角设置为0,0。
 
 
我写了下面的LISP例程,但它不工作。有人能帮忙吗?我想避免用户提示
 
 
(defun c:test()
 
(setq X1(应用“min(mapcar”车点列表)))
(setq Y1(应用“min(mapcar”cadr点列表)))
(setq X2(应用“max(mapcar)”car点列表)
(setq X2(应用“max(mapcar)”car点列表)
; (setq LL(getpoint“\nX1 Y1:”)
(setq LL(列表X1 Y1))
(setq LR(列表X2 Y1))
(setq UR(列表X2 Y2))
(setq UL(列表X1-Y2))
;(setq newbp(getpoint’(0 0)“新基点”)
;(setq sel1(ssget LL UR))
(命令“Move”“all”“LL”(0 0))
(普林斯)
)
 
 
谢谢
hssiway公司
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 16:52:42 | 显示全部楼层
首先需要保存当前图层状态,然后启用、解冻和解锁所有图层。你需要确保你移动了所有东西。
下次重新生成并使用(getvar“EXTMIN”)作为LL值。
全部移动,然后重置该层状态。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:09:18 | 显示全部楼层
更好的方法是找到标题栏插入点,然后相对于0,0移动所有内容。
 
布局中标题栏的示例。代码中的标题栏位于左下角,作为插入点,并移动到0,0
  1. ; move title blocks
  2. ; By Alan H
  3. (PROMPT ".....now moving dwgs....")
  4. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  5. (vlax-for lay (vla-get-Layouts doc)
  6. (setq plotabs (cons (vla-get-name lay) plotabs))
  7. )
  8. (setq plottablist (acad_strlsort plotabs))
  9. (setq len (length plottablist))
  10. (setq oldsnap (getvar "osmode"))
  11. (setvar "osmode" 0)
  12. (setq en (entsel "Pick Title Block:"))
  13. (setq K 0)
  14. (repeat len
  15. (setq name (nth K plottablist))
  16. (princ name)
  17. (if (/= name "Model")
  18.    (progn
  19.    (setvar "ctab" name)
  20.    (setq minxy  (getvar "extmin"))
  21.    (setq maxxy (getvar "extmax"))
  22.    (setq  ed (entget (car en)))
  23.    (setq ss (ssget "_X" (list (cons 0 "INSERT")  (cons 410 name) (cons 2 (cdr (assoc 2 ed))) ) ))
  24.    (setq n (sslength ss))
  25.    (setq en (ssname ss 0))
  26.    (setq xy (assoc 10 (entget en)))
  27. ; insertion pt   (setq xy (assoc 10 el))
  28.    (setq xy (list (cadr xy)(caddr xy)))
  29.    (command "move" "w" minxy maxxy  "" xy "0,0")
  30.    (command "zoom" "E")
  31.    ) ;end progn
  32. ) ; end if
  33. (setq K (+ K 1))
  34. (princ k)
  35. (setq ss '()
  36.        xy nil)
  37. ) ; end repeat
  38. (setvar "osmode" oldsnap)
  39. (princ)
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 17:28:21 | 显示全部楼层
请阅读代码发布指南,并编辑代码以包含在代码标签中。[NOPARSE]
  1. Your Code Here[/NOPARSE]
=
  1. Your Code Here
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-13 20:41 , Processed in 0.350127 second(s), 71 queries .

© 2020-2025 乐筑天下

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