 - ;; 设置图块文件所在的目录
- (setq blockDirectory "D:\\张生\\说明\")
- ;; 初始化计数器
- (setq i 1)
- ;; 循环生成 C1 到 C20 命令
- (while (<= i 20)
- ;; 动态定义命令函数
- (eval
- (list 'defun
- ;; 命令名 C:C1, C:C2, ..., C:C20
- (read (strcat "C:C" (itoa i)))
- '() ; 无参数
- '(progn ; 使用 progn 将多个表达式组合成一个
- ;; 提示用户选择插入点 (在命令执行时)
- (setq insertPt (getpoint "\n指定图块插入点: "))
- ;; 发送 _INSERT 命令,指定图块文件和插入点
- (command "_-INSERT" (strcat blockDirectory (itoa i) "孔.dwg") insertPt pause pause pause) ; pause 用于 Scale X, Y 和 Rotation
- ;; 检查插入是否成功 (entlast 是否更新)
- (if (/= (entlast) nil)
- (progn
- ;; 发送 _.ROTATE 命令
- ;; 选择对象 (entlast)
- (command "_.ROTATE" (entlast) "")
- ;; 指定基点 (图块的插入点)
- (command (getvar 'lastpoint)) ; 通常 _INSERT 后 lastpoint 会是插入点,或者重新获取 (cdr (assoc 10 (entget (entlast))))
- ;; 暂停,让用户指定第二点或输入角度
- (command pause)
- ) ; progn
- (princ "\n图块插入失败,无法执行旋转。")
- ) ; if
- ;; 清理命令行输出
- (princ)
- ) ; progn
- ) ; list for eval
- ) ; eval
- ;; 计数器递增
- (setq i (+ i 1))
- ) ; while
- ;; 可选:打印完成信息
- (princ "\n已成功定义命令 C1 到 C20。")
- (princ)
 - (setq i 1)
- (while (<= i 20)
- (eval
- (list 'defun
- (read (strcat "C:C" (itoa i))) ; 定义命令 C1, C2...
- '() ; 无参数
- (list 'progn
- (list 'command "_-INSERT" ; 注意 -INSERT,不要弹出对话框
- (strcat "D:\\张生\\说明\" (itoa i) "孔.dwg")
- '(getpoint "\n图块插入点:") ; 延迟执行
- 1.0 ; 缩放X
- 1.0 ; 缩放Y
- 0.0 ; 初始角度
- )
- (list 'command "_.ROTATE"
- (list 'entlast) "" ; 旋转对象
- (list 'cdr (list 'assoc 10 (list 'entget (list 'entlast)))) ; 基点:块的插入点
- 'pause ; 让用户指定角度
- )
- '(princ) ; 静默退出
- )
- )
- )
- (setq i (1+ i))
- )
打卡蹭积分
|