woodman78 发表于 2022-7-6 08:03:11

使用来自的值重复偏移

是否有人拥有lisp,可以重复偏移文本中的值列表,从而允许用户选择要偏移的项?
 
我们用map 3d做了很多横截面,需要某种方式来指示其上的现有道路。这会有很大帮助。
 
谢谢

BIGAL 发表于 2022-7-6 08:56:08

这里有很多关于多个偏移和设置偏移值的Lisp,您可以简单地设置默认值,然后按enter键接受。我使用这种技术,我们知道我们将在会话中连续绘制一个值,重复lisp不会提出问题,唯一的回退是需要第二个lsp通常在命令行键入它(setq OFF1 nil),以再次强制用户输入。
 
如果你以前画过偏移线,我在上面画了一条线,它会自动计算出偏移值,这样你就不必记住它们了。对于与绘制墙lisp结合使用的不同尺寸的建筑墙非常方便。

pBe 发表于 2022-7-6 09:31:38

而不是从文件中读取值。您可以使用扩展数据方法
 
(defun c:OXDSample (/ Add_XData Read_XData obj OData ofd)
;;; Xdata Function byASMI;;;
(defun Add_XData (Ent ; - Entity Ename
   App ; - Application name
   dList ; - XData list (list(cons group data)...)
      )
(regapp App)
(entmod(append(entget Ent)(list(list -3(append(list App)dList)))))
)
(defun Read_XData(
                   Ent; - Entity Ename
                   apName      ; - Application name
                   /
                   xEnt)
   (setq xEnt (entget Ent (list apName))
         xEnt (vl-remove
                      apName
                      (cadar
                            (vl-remove-if
                                  (function
                                        (lambda (a)
                                              (/= -3 (car a))))
                                  xEnt)))
         )                           ; end setq
   )
(while (setq obj (car (entsel "\nSelect object to offset:")))
   (if (setq OData (Read_XData obj "Offset values"))
         OData
         (progn (initget 1)
               (setq ofd (getdist "\nOffset Distance: "))
               (Add_XData
                     obj
                     "Offset values"
                     (list (cons 1000 (rtos ofd 2))))
               (setq OData (Read_XData obj "Offset values")))
         )
   (command "_offset" (distof (cdar odata)) obj pause "")
   )(princ)
          )
 
如果所选实体没有扩展数据值,程序将提示您输入距离。如果它确实有数据,则会提示您拾取要偏移的边,并使用分配给该实体的数据
 
试试看。
HTH公司
 
编辑:是的,当你关闭文件时,这些值仍然存在。
页: [1]
查看完整版本: 使用来自的值重复偏移