乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 144|回复: 9

连接新截面轮廓线成实体再续

[复制链接]

22

主题

61

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2004-3-31 17:05:00 | 显示全部楼层 |阅读模式
连接新截面轮廓线成实体再续:
上次多谢龙龙仔帮我修改的程序,很快就由一个圆柱体得到一个新的圆周曲面。后来加入了一个程序j,希望能将圆周曲面变为固体。只是错误提示:在子程序j中explode这一步,好像不可以选择主程序中得到的一截曲面?不知道是为什么。恳请帮忙。
非常感谢!

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

22

主题

61

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2004-3-31 17:10:00 | 显示全部楼层
对了,j程序是用的先将曲面炸开,得到一个个的facet,在设法得到一个facet 的四个端点中上面两个的中点,连接该点和rulesurf的上曲线的型心,得到一个路径,再使facet沿该路径放样,每个facet都这么做,得到很多的小固体,再联接它们成一个整的固体。(好像错误也提示说:不能沿该路径放样)。谢谢!
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2004-4-1 07:56:00 | 显示全部楼层
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:2ixikhswwqc.LSP 
下载次数:0  文件大小:3.97 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]


        

gx5pxkjo32h.JPG

gx5pxkjo32h.JPG


1wweddotkqh.JPG

1wweddotkqh.JPG

回复

使用道具 举报

22

主题

61

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2004-4-1 14:50:00 | 显示全部楼层
e
回复

使用道具 举报

22

主题

61

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2004-4-1 14:58:00 | 显示全部楼层
龙龙仔,太谢谢您了。
您的型心选取处理的好精妙。region 是要在ucs平面上的,所以用了command        "_.move"        "l"        ""        "0,0"        (list        0        0        (-        DH))),它并不改变型心得坐标(x,y值)。又由於bl中将新轮廓线移开了一个距离,所以在ee中也将x加上一个偏移值。z值与mesh一端点的z相同。合并后得型心坐标。
您加了一步,将四边形的facet分成两个三角形进行extrude.这里想请问你,为社么单独建一个rulesurf,然后对其上的一个facet可以四边形拉伸,而在这里就不行了呢?
还想请问您,为什么要加(print(entget ENTT))(在bl子程序中)这一步?
(setq SECC (ssadd))
(setq SECcC (ssadd)) 这两步放在j程序中行不行,是不是习惯都放在主程序中?
还有想再麻烦您帮我看看,修改后的程序,出错提示说选择的物体不能被拉伸,发现bl的第一步eee为空,不知道是不是(c:ee)(c:bl)放在一起的原因,非常感谢!!!
回复

使用道具 举报

22

主题

61

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2004-4-1 15:00:00 | 显示全部楼层
请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:1ee2vxdyuvz.LSP 
下载次数:0  文件大小:3.95 KB  售价:2银币 [记录]
下载权限: 不限 以上或 Vip会员   [开通Vip]   [签到领银币]  [免费赚银币]

回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2004-4-1 17:09:00 | 显示全部楼层
1.                                         然後對其上的一個facet可以四邊形拉伸,而在這裏就不行了呢?
->3點成一平面,4點就不一定
2. 問您,為什麼要加(print(entget ENTT))(在bl副程式中)這一步?
         ->調試程序忘了刪除
3.(setq SECC (ssadd))(setq SECCC (ssadd)) 這兩步放在j程式中行不行?
->(setq SECC (ssadd))是記錄SOLID,每處理一層先UNION所有SOLID(避免最後一次UNION)。
->(setq SECCC (ssadd))是記錄PATH,主要希望最後一次刪除所有PATH。
         
它們都在循環外,而j程式在循環內,如果把它們放在J,則程序要多執行
       
       
希望你再比對一下你的程序與我的程序差別。
注意:你最好別動(setq SECC (ssadd))的腦筋,不然程序………
回复

使用道具 举报

22

主题

61

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2004-4-2 07:55:00 | 显示全部楼层
龙龙仔,谢谢你的解答。
我运行了你的和我的修改后的程序,都不能得到象你的一样的图形,是一个类似三棱柱一样的东东。请你再帮我看看好吗?
对集合类的元素[U][U]union,的确省掉了很多步。[/U][/U][U][/U]请问每层生成一整个固体后,层与层之间是不是还要union一下?
回复

使用道具 举报

29

主题

1152

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1268
发表于 2004-4-2 08:04:00 | 显示全部楼层
(defun C:SL ()
         (setq STIME (getvar "date"))
         (vl-load-com)
         (setvar "osmode" 0)
         (command "_.UCS" "")
         (setq ENT (car (entsel "pick up the object: ")))
         (setq ENTV (vlax-ename->vla-object ENT))
         (vla-getboundingbox ENTV 'PT1 'PT2)
         (setq        H (abs (- (last (vlax-safearray->list PT1))
                         (last (vlax-safearray->list PT2))
                                                         )
                 )
         )
         (setq Z (last (vlax-safearray->list PT2)))
         (setq SL (/ H 10))
         (setq SEC (ssadd))
         (setq        J         0
        ZP NIL
         )
         (repeat 11
                         (setq DH (+ Z (* J SL)))
                         (setq ZP (list 0 0 DH))
                         (command "section" ENT "" "xy" ZP)
                         (setq RE (entlast))
                         (command "_.move" RE "" "0,0,0" (list 0 0 (- DH)))
                         (C:EE)
                         (C:BL)
                         (ssadd (entlast) SEC)
                         (setq J (1- J))
         )
         (command "surftab1" 25)
         (setq I 0)
         (setq SECC (ssadd))
         (repeat 10
                         (setq F (ssname SEC I))
                         (setq G (ssname SEC (+ 1 I)))
                         (command "rulesurf" F G)
                         (C:J)
                         (setq I (1+ I))
         )
         (command "_.ERASE" SEC "")
         (setq ETIME (getvar "date"))
         (princ "\ntime needed to run this program:")
         (princ (* 86400.0 (- (- ETIME STIME) (fix (- ETIME STIME))))
         )
         (princ "seconds")
         (princ)
)
(defun C:EE ()
         (vl-load-com)
         (setq NAME (entlast))
         (setq XOBJ (vlax-ename->vla-object NAME))
         (setq PTST (vla-get-centroid XOBJ))
         (setq PTMS (vlax-safearray->list (vlax-variant-value PTST)))
         (setq PTMS (list (+ (car PTMS) 25) (cadr PTMS)))
)
(defun C:J ()
         (setq HD (entlast))
         (command "explode" HD)
         (setq MESHES (ssget "p"))
         (setq W 0)
         (setq SECCC (ssadd))
         (repeat (sslength MESHES)
                         (setq EN (ssname MESHES W))
                         (setq M (entget EN))
                         (setq PP1X (car (trans (cdr (assoc 10 M)) 0 1)))
                         (setq PP2X (car (trans (cdr (assoc 11 M)) 0 1)))
                         (setq MPX (/ (+ PP1X PP2X) 2))
                         (setq PP1Y (cadr (trans (cdr (assoc 10 M)) 0 1)))
                         (setq PP2Y (cadr (trans (cdr (assoc 11 M)) 0 1)))
                         (setq MPY (/ (+ PP1Y PP2Y) 2))
                         (setq PP1Z (caddr (trans (cdr (assoc 12 M)) 0 1)))
                         (setq MP (list MPX MPY PP1Z))
                         (setq CEN (append PTMS (list PP1Z)))
                         (command "line" MP CEN "")
                         (setq PATH (entlast))
                         (command "_.3DPOLY"
                                         (trans (cdr (assoc 10 M)) 0 1)
                                         (trans (cdr (assoc 11 M)) 0 1)
                                         (trans (cdr (assoc 12 M)) 0 1)
                                         "c"
                         )
                         (command "extrude" (entlast) "" "p" PATH)
                         (ssadd (entlast) SECC)
                         (command "_.3DPOLY"
                                         (trans (cdr (assoc 10 M)) 0 1)
                                         (trans (cdr (assoc 12 M)) 0 1)
                                         (trans (cdr (assoc 13 M)) 0 1)
                                         "c"
                         )
                         (command "extrude" (entlast) "" "p" PATH)
                         (ssadd (entlast) SECC)
                         (ssadd PATH SECCC)
                         (setq W (1+ W))
         )
         (command "_.UNION" SECC "")
         (command "_.ERASE" MESHES SECCC "")
)
(defun C:BL (/ L LL)
         (command "-color" 9)
         (command "hatch" "u" 0 5 "n" RE "")
         (command "erase" RE "")
         (command "explode" (entlast))
         (vl-load-com)
         (setq SS (ssget "P"))
;;(setq SS (ssget "x" '((62 . 9))))
         (setq I 0)
         (setq PT_LST NIL)
         (repeat (sslength SS)
                         (setq ENTT (ssname SS I))
                         (setq ENS (vlax-ename->vla-object ENTT))
                         (setq
                                         L        (vlax-curve-getdistatparam ENS (vlax-curve-getendparam ENS))
                         )
                         (setq LL (- (+ (expt L 1.2) 0.1) (/ DH 12)))
                         (setq DX (abs(/ (- LL L) 2)))
                         (setq LE (entget ENTT))
                         (setq PT1X (car (cdr (assoc 10 LE))))
                         (setq PT1Y (cadr (cdr (assoc 10 LE))))
                         (setq PT1Z (caddr (cdr (assoc 10 LE))))
                         (setq PT1 (list (- PT1X DX) PT1Y PT1Z))
                         ;;(setq LE (entget ENTT))
                         (setq PT2X (car (cdr (assoc 11 LE))))
                         (setq PT2Y (cadr (cdr (assoc 11 LE))))
                         (setq PT2Z (caddr (cdr (assoc 11 LE))))
                         (setq PT2 (list (+ PT2X DX) PT2Y PT2Z))
                         (setq PT_LST (append PT_LST (list (list PT1 PT2))))
                         (entdel ENTT)
                         (setq I (1+ I))
         )
         (command "-color" 7)
         (command "spline")
         (mapcar '(lambda (E) (command (car E))) PT_LST)
         (mapcar '(lambda (E) (command (cadr E))) (reverse PT_LST))
         (command "c" "")
         (command "move" "l" "" "-25,0,0" ZP)
         (princ)
)
回复

使用道具 举报

22

主题

61

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
149
发表于 2004-4-2 08:40:00 | 显示全部楼层
long long zai,i am sorry.i still cannot get that result.It shows L is nil.
Would you please help me to run it again? Are you using Autocad 2000?
Appreciate!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-15 17:30 , Processed in 3.152640 second(s), 80 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表