hx4758
发表于 2011-9-9 17:41
怎一个谢字,能表达得了的...
362996104
发表于 2011-9-11 09:31
牛人,啊做的不错
cadqing
发表于 2011-9-11 16:33
看样子,得学习一下怎么定,LSP程序.
xhq1954425
发表于 2011-9-12 05:48
本帖最后由 xhq1954425 于 2011-9-12 09:59 编辑
在CAD中绕两个轴转用原来的ZZZ是不行的,需要另编程ZZZ解决!
编一个没加修饰的程序试了一下:
(defun C:ZZZ( )
(setvar "cmdecho" 0)
(command "ucsicon" "off")
(command "highlight" 0)
(repeat 3600
(command "UCS" "na" "R" "竖直轴")
(command "rotate" (handent "1B1") "" "0,0,0" "36")
(command "UCS" "na" "R" "水平轴")
(command "rotate" (handent "1B9") "" "0,0,0" "36")
)
(command "highlight" 1)
(princ)
)
leiyaow
发表于 2011-9-13 10:14
回复 1# hx4758
这个程序在论坛里面有的,不过好久了楼主可能要花时间去找了哦,一起也是一个直升机 会自己转、飞,
leiyaow
发表于 2011-9-13 10:15
回复 19# xhq1954425
呵呵 不错
tonyle
发表于 2011-9-13 11:58
用ZZZ程序吧,我这贴就用它的http://www.askcad.com/bbs/thread-49415-1-1.html
还有个飞机的,我也下载,自动飞起来的,不知道放那里了。
徽商往事
发表于 2011-9-13 16:15
唉,程序加载了,还是没有转动起来
xhq1954425
发表于 2011-9-14 07:12
本帖最后由 xhq1954425 于 2011-9-14 08:48 编辑
唉,程序加载了,还是没有转动起来
徽商往事 发表于 2011-9-13 16:15 http://www.askcad.com/bbs/images/common/back.gif
如果你是用的我的程序,你首先要把DWG文件做对才能旋转起来!
要注意DWG文件中的两个问题:
1.先命名保存两个用户坐标系于DWG文件中,名称分别为 水平轴和竖直轴 (就是你自己定义的两个旋转轴)
2.查一下两个转动件的 句柄 代替 1B1和 1B9 (方法:先选中其中一个转动件后输入LIST,然后回车就能查得)
来个交警的三个部分的动画:;P
cswswq2009
发表于 2011-9-14 16:24
回复 24# xhq1954425
请教许老师 如何确定两个旋转物体的中心点呢?
xhq1954425
发表于 2011-9-14 18:14
本帖最后由 xhq1954425 于 2011-9-14 18:15 编辑
1.(command "rotate" (handent "1B9") "" "0,0,0" "36") 中的 rotate命令在三维中使用的规则是绕Z轴 旋转。
2.先用坐标变换命令Z轴矢量ucs---zaxis(或三点式ucs---3)将坐标系的Z轴与用户定义的旋转轴重合
3.命名保存这个坐标系:ucs---na---s---输入这个坐标系的名称
**至此,这个坐标系就随文件一起被保存了。
以后无论是当前坐标系怎样,只要你点击 工具--命名UCS--选择里面的 某个坐标系名称,且置为当前,就自动恢复这个被存贮的坐标系了。
不知这样说明白了没有?再给个简单的动画你再看一下:
xhq1954425
发表于 2011-9-14 18:38
本帖最后由 xhq1954425 于 2011-9-14 19:20 编辑
(defun C:ZZZ( )
(setvar "cmdecho" 0)
(command "ucsicon" "off")
(command "highlight" 0)
(repeat 3600;这个是循环次数,360就行了,3600太多了,没完没了!
(command "UCS" "na" "R" "竖直轴")
(command "rotate" (handent "1B1") "" "0,0,0" "36")
(command "UCS" "na" "R" "水平轴")
(command "rotate" (handent "1B9") "" "0,0,0" "36")
)
(command "highlight" 1)
(princ)
)
这个程序中 竖直轴 和 水平轴 必需是在DWG文件中命名保存过的,当然你要是用了别的名称就要改动一下程序,
(command "rotate" (handent "1B9") "" "0,0,0" "36")中的1B9
(command "rotate" (handent "1B1") "" "0,0,0" "36")中的 1B1
是表示两个旋转对象的“句柄”
在CAD中,每一个对象(包括块)都有一个“句柄”,它在某一个DWG文件中是唯一的也是不变的,在使用我的程序时,需要把两个要旋转的对象的“句柄”放在(handent " ") 的两个双引号中,获得“句柄”的方法如下演示:
这个程序只是试试,没有美化,如果有需要跟我说一下,再完善一下。
cswswq2009
发表于 2011-9-14 20:02
如果老师有空 可以做个通用版的:D
hx4758
发表于 2011-9-15 15:52
老师我觉得不用这么麻烦,直接把要旋转的转成块就行了啊! 然后以块的基点为旋转中心!
xhq1954425
发表于 2011-9-15 20:29
老师我觉得不用这么麻烦,直接把要旋转的转成块就行了啊! 然后以块的基点为旋转中心!
hx4758 发表于 2011-9-15 15:52 http://www.askcad.com/bbs/images/common/back.gif
1.你的问题应该是三维旋转问题
2.三维旋转是绕轴转,绕点如何转?