KendiKong 发表于 2022-7-5 17:57:07

帮助移动维度

我做了这个函数,使用第一个端点、要生成的维度数和DIMSPACE在两个点之间生成相等的维度。
 
它看起来像是这张图片顶部显示的内容。我希望它看起来像图片底部的那个(忽略尺寸在上面而不是在下面)。
 
我可以对我的代码做什么快速的更改来实现这一点。还有其他可以使我的基本代码更简单的更改吗?(不需要)。
 
http://i.imgur.com/H6kMlh8.png
 
代码如下:
 
(defun c:holedim()

(setq oldsnap (getvar "osmode"))
(setq p0 (getpoint "\n pick left endpoint: "))
(setq pfirst (getpoint "\n pick point of the first hole"))
(setq plast (getpoint "\n pick point of the last hole"))
(setq n (getint "Enter number of holes: "))
(setq dimspacingy (getreal "Enter dimspacing value: "))

(setq p0x (car p0))
(setq pfirstx (car pfirst))
(setq plastx (car plast))
(setq p0y (cadr p0))
(setq pfirsty (cadr pfirst))
(setq plasty (cadr plast))
(setq pnx pfirstx)
(setq pny pfirsty)
(setq pn pfirst)

(setq dimoffsetx (/ (- plastx pfirstx) (- n 1.0)))
(setq halfdimoffsetx (/ dimoffsetx 2.0))
(setq dim1x (/ (+ p0x pfirstx) 2.0))
(setq dim1y (+ pfirsty dimspacingy))
(setq dimnx dim1x)
(setq dimny dim1y)
(setq dimn (list dimnx dimny))

(setvar "osmode" 0)
(repeat n
   (command "dimlinear" p0 pn dimn)

   (setq dimnx (+ pnx halfdimoffsetx))
   (setq dimny (+ dimny dimspacingy))
   (setq dimn (list dimnx dimny))
   (setq pnx (+ pnx dimoffsetx))
   (setq pn (list pnx pny))
   )
(setvar "osmode" oldsnap)

(princ)
)

SLW210 发表于 2022-7-5 18:07:31

我将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。
 
您需要阅读代码发布指南,并编辑您的帖子,以将代码包含在代码标签(而不是报价标签)中。

Tharwat 发表于 2022-7-5 18:08:25

你好
 
阅读此处的极函数并相应修改代码,然后可以检查第一个点和最后一个点之间的角度,并决定与该角度成[+]或[-]90度的角度。
 
祝你好运

KendiKong 发表于 2022-7-5 18:16:33

 
出于我的目的,我只处理水平面上的线,所以我认为极坐标是不必要的。我更感兴趣的是如何移动维度,然后尝试使代码更简单。

Tharwat 发表于 2022-7-5 18:22:00

即使你总是在水平面上工作,最好总是有一个动态代码在大多数情况下(如果不是所有情况下)工作。
 
不管怎样,你是在强迫维度一直在Y轴上还是相反的方向,即Y轴?

KendiKong 发表于 2022-7-5 18:29:14

它可以是我需要的任意一个,这取决于我的DIMSPACE值的符号

Tharwat 发表于 2022-7-5 18:32:43

您想给出的可变dimspacing的值是多少,它将重定向尺寸上/下的方向?
你能上传一个带有绘图或图像的示例,展示你创建这两个形状/设计的步骤吗?

KendiKong 发表于 2022-7-5 18:36:10

首先,我选择测量的最左端点,然后我选择第一个测量点,然后是我需要测量的最后一个点(最右点),然后我输入从第一个测量到最后一个测量的测量数量(本例中为22),然后是y-dimspacing值(在图片中,我使用-1.5表示顶部,1.5表示底部)

Tharwat 发表于 2022-7-5 18:45:10

我认为如果你考虑负值随维度下降,它应该起作用,而正值通常应该遵循Y轴,没有任何修改。

BIGAL 发表于 2022-7-5 18:47:13

希望很容易
 
; pick a dim then move the text and do again copy to command line 1st 2 lines
(setq obj (vlax-ename->vla-object (entlast)))
(Alert (vla-get-textposition obj))
;(vla-put-textposition obj pt) ; new text pt
页: [1] 2
查看完整版本: 帮助移动维度