Tomislav 发表于 2022-7-5 22:50:00

如何ucs wcs?

你好
有人能告诉我如何在一些当前ucs中获取点的坐标吗
转换到wcs后,下降到完全相同的位置,但坐标不同(当然是在wcs中)?
我试过(trans-pnt 1 0),但它们与ucs不在同一位置。。。

David Bethel 发表于 2022-7-5 22:57:27

通常(trans pnt 1 0)有效。
 
您如何确定“pnt值”?一些实体点仅存储在WCS中,因此不需要(trans)。
即所有三维面点、多段线网格点、三维多段线点、一些尺寸点
 
-大卫

Tomislav 发表于 2022-7-5 23:00:29

我通过选择它们来获得分数。。。
这是完整的Lisp程序
 
;;; Calculating heights of points on slope by selecting 3 points
;;; first two points are for determining longitudinal slope and third is for
;;; latitudinal slope

(defun c:PHOS(/ 1_pnt 2_pnt 3_pnt h_ppx h_ppy 2_pnt_t 3_pnt_t 1_pnt_u 2_pnt_u 3_pnt_u)
(setvar "cmdecho" 0)
(setq osm(getvar 'OSMODE))
(setvar 'OSMODE
(princ"\nSelect 3 points with known height for determining slope...\n
...starting point,ending point and point on the left side relative to first two")
(setq 1_pnt(getpoint)
2_pnt(getpoint)
3_pnt(getpoint)
h nil
h_ppx(/(-(caddr 2_pnt)(caddr 1_pnt))
        (sqrt(+(expt(-(car 2_pnt)(car 1_pnt))2)(expt(-(cadr 2_pnt)(cadr 1_pnt))2))))
1_pnt_u (reverse(cons 0.0 (cdr(reverse 1_pnt))))
2_pnt_u (reverse(cons 0.0 (cdr(reverse 2_pnt))))
3_pnt_u (reverse(cons 0.0 (cdr(reverse 3_pnt))))
)
(setvar 'OSMODE 0)
(command "ucs" "3p" 1_pnt_u 2_pnt_u "")
(setq 1_pnt_t(trans 1_pnt 0 1)
2_pnt_t(trans 2_pnt 0 1)
3_pnt_t(trans 3_pnt 0 1)
h_ppy(/(-(caddr 3_pnt_t)(+(* h_ppx (car 3_pnt_t))(caddr 1_pnt)))(cadr 3_pnt_t))
)
(setvar 'OSMODE
(while(setq pnt(getpoint"\nPick point for calculating height"))
   (setq h(+ (caddr 1_pnt)(*(car pnt)h_ppx)(*(cadr pnt)h_ppy)))
   (command "text" "j" "bl" (trans pnt 1 0) "" "" (rtos h 2 3))
   ;(princ "\n")
   ;(princ (rtos h 2 3))
   )
(command "ucs" "")
(setvar 'OSMODE osm)
)

(princ
"\nCalculating point heights on slope...
Copyright © by TOMISLAV VARGEK...Osijek,Croatia...\n    ...Type PHOS to start..."
)

(defun *error*        (msg)
(command "ucs" "")
(setvar 'OSMODE osm)
(princ)
)
 
 
请注意带有命令“text”的行。。。这就是我需要将文本放置到wcs的地方

marko_ribar 发表于 2022-7-5 23:09:19

(getpoint)函数从当前UCS获取点数据。。。也许这句话可以帮助你确定你的错误在哪里。。。

Tomislav 发表于 2022-7-5 23:14:09

是的,我知道,一切都很好,只是没有放置文本。。你认为我应该使用entsel而不是getpoint吗?

7o7 发表于 2022-7-5 23:18:29

尝试更改:
(命令“text”“j”“bl”pnt“”(rtos h 2 3))

Tomislav 发表于 2022-7-5 23:20:08

是的,我知道我可以这样做,但每次计算坡度时,我都会得到不同的旋转文本,我试图避免这种情况。。。这就是为什么我尝试通过trans。。。也许有一种方法可以让文本总是朝着同一个方向旋转,但我不知道怎么做?

marko_ribar 发表于 2022-7-5 23:26:04

尝试:
 

(while (setq pnt (getpoint"\nPick point for calculating height"))
   (setq h(+ (caddr 1_pnt)(*(car pnt)h_ppx)(*(cadr pnt)h_ppy)))
   (setq pnt (trans pnt 1 0))
   (command "ucs" "w")
   (command "text" "j" "bl" pnt "" "" (rtos h 2 3))
   (command "ucs" "p")
   )

7o7 发表于 2022-7-5 23:31:57

Trans函数不影响文本的旋转。因此,如果你想(entlast)文本有一个右旋转,你必须entmod它的旋转。

Tomislav 发表于 2022-7-5 23:36:14

Thanx Marko(majstore)解决了这个问题。。。我试着做一些类似的事情,但能不能找到正确的组合,转向什么时候
thanx 7o7和David作为输入。。。
页: [1] 2
查看完整版本: 如何ucs wcs?