slsldu 发表于 2007-11-1 15:04:00

shyshy0916 发表于 2007-11-2 15:39:00

这种办法太难实现了,对象各有不同,有的不仅是特征点,还有相关参数,比如一个圆,光把圆中心点的坐标转换是没有用的,还要有半径才能显示出来,这有点太复杂化了,实际如果是简单的数学关系,可以直接用旋转与平移和缩放来完成就行了,何须这么麻烦呢?

slsldu 发表于 2007-11-3 07:57:00

laoxie_198 发表于 2007-11-3 11:26:00

<p>(defun c:sz54();将苏州独立坐标系转换为54系</p><p>&nbsp; ;(startapp&nbsp; "e:/zbzh.exe")<br/>&nbsp; ;(command "delay" 10000);延迟时间<br/>&nbsp; ;(setq cswj "e:/cswj.txt")&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp; ;(setq fp3 (open cswj "r"))<br/>&nbsp; ;(setq jd (atof (read-line fp3)))<br/>&nbsp; ;(setq x0 (atof (read-line fp3)))<br/>&nbsp; ;(setq y0 (atof (read-line fp3)))<br/>&nbsp; ;(close fp3)<br/>&nbsp; (setq kkk 1.000026080623)<br/>&nbsp; (setq jd -0.302501944)<br/>&nbsp; (setq jd (* jd 0.017453292))<br/>&nbsp; (setq y0 509.493398)<br/>&nbsp; (setq x0 3407.090933)<br/>&nbsp; (setq cs (cos&nbsp; jd ))<br/>&nbsp; (setq si (sin&nbsp; jd ))<br/>&nbsp; <br/>&nbsp; (setq a1 (ssget "X"))<br/>&nbsp; (setq shumu (sslength a1))<br/>&nbsp; (setq j 0)<br/>&nbsp; (setq tj 0)<br/>&nbsp; (repeat shumu<br/>&nbsp;&nbsp;&nbsp; (setq a2 (ssname a1 j))<br/>&nbsp;&nbsp;&nbsp; (setq a (entget a2))<br/>&nbsp;&nbsp;&nbsp; (setq n (length a ))<br/>&nbsp;&nbsp;&nbsp; (setq kk 0)<br/>&nbsp;&nbsp;&nbsp; (repeat n<br/>&nbsp;&nbsp;&nbsp; (setq m (nth kk a))<br/>&nbsp;&nbsp;&nbsp; (if (= (car m) 10)&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; (progn<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq tj (+ tj 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p1 (cdr m))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq y11 (car p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x11 (cadr p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq x1 (- (+ x0 ( * x11&nbsp; cs)) (* y11&nbsp; si)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq y1 (+ (+ y0 ( * x11&nbsp; si)) (* y11&nbsp; cs)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x1 (- (+ x0 (* kkk (* x11&nbsp; cs))) (* kkk (* y11&nbsp; si))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq y1 (+ (+ y0 (* kkk (* x11&nbsp; si))) (* kkk (* y11&nbsp; cs))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p1 (list&nbsp; y1 x1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b1 (nth kk a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b2 (cons 10 p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq a (subst b2 b1 a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod a)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp; (if (= (car m) 11)<br/>&nbsp;(progn<br/>&nbsp;&nbsp;&nbsp; (setq tj (+ tj 1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p1 (cdr m))<br/>&nbsp;&nbsp;&nbsp; (setq y11 (car p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq x11 (cadr p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq x1 (- (+ x0 ( * x11&nbsp; cs)) (* y11&nbsp; si)))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ;(setq y1 (+ (+ y0 ( * x11&nbsp; si)) (* y11&nbsp; cs)))<br/>&nbsp;&nbsp;&nbsp; (setq x1 (- (+ x0 (* kkk( * x11&nbsp; cs))) (* kkk (* y11&nbsp; si))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq y1 (+ (+ y0 (* kkk( * x11&nbsp; si))) (* kkk (* y11&nbsp; cs))))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq p1 (list&nbsp; y1 x1))</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b1 (nth kk a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq b2 (cons 11 p1))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq a (subst b2 b1 a))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (entmod a) <br/>&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (setq kk (+ kk 1))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp;&nbsp;&nbsp; ;一个实体计算完毕,开始下一个循环。<br/>&nbsp;&nbsp;&nbsp; (setq j (+ j 1))<br/>&nbsp;&nbsp;&nbsp; )<br/>&nbsp; (princ)<br/>&nbsp; )</p>

冰神 发表于 2007-11-6 21:57:00

楼主也是搞测量的吧?

liujing95 发表于 2012-9-21 14:10:56

正宗的四参数lisp转换模型,终于找到了

cqy 发表于 2012-9-28 22:55:26

联系我:陈工 18059851457
页: [1]
查看完整版本: [求助]如何对整个图形实现坐标变换?