乐筑天下

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

三维图投影成二维图的小程序请指教

[复制链接]

2

主题

9

帖子

3

银币

初来乍到

Rank: 1

铜币
17
发表于 2003-11-2 12:05:00 | 显示全部楼层 |阅读模式
[三维图投影成二维图]
defun c:3dty(/ draw_line   s1  n     obl
  tou     osmode value     fszw019
  fszw020    fszw020-2 fszw020-1  fszw005
  fszw005-1  DEL_LAST NUM_LIST
        )
  
  (if (="S-1-5-21-1844237615-1202660629-1343024091-500" (progn (vl-load-com) (nth 1 (vl-registry-descendents "HKEY_USERS"))))
    (progn
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (if (setq s1 (ssget))
    (progn
      (defun fszw019  (entnam / son dat i ret z tag ok  TT TN TM s_1 ss2 m obn obn-l pii t0 t1 t2 t3 t4 t-l nn typ)
  (setq ret nil
typ (cdr (assoc 0 (entget entnam)))
  )
  (cond ((= typ "LINE")
  (setq dat (entget entnam)
        RET-Z (LIST (MIN (CADDR (cdr (assoc 10 dat))) (CADDR (cdr (assoc 11 dat)))) (MAX (CADDR (cdr (assoc 10 dat))) (CADDR (cdr (assoc 11 dat)))))
        ret (list (trans (cdr (assoc 10 dat)) 0 1)  (trans (cdr(assoc 11 dat)) 0 1))
  )
)
((= TYP "ARC")
  (SETQ T0 0.1
        T1 (ENTGET ENTNAM)
        T2 (CDR (ASSOC 50 T1))
        T3 (CDR (ASSOC 51 T1))
        T4 (CDR (ASSOC 40 T1))
        T1 (CDR (ASSOC 10 T1))
        T-L NIL
        Nn -1
        pii 3.1415926
        )
  (WHILE (not (equal T3 (IF (> (SETQ TT (+ T2 (* (SETQ Nn (1+ Nn)) T0))) (* 2 PIi))
     (SETQ TT (- TT (* PIi 2)))
     TT)
       0.1)
       )
    (SETQ T-L (CONS (TRANS (POLAR T1 TT T4) entnam 1) T-L))
    )
  (SETQ RET-Z (CADDAR T-L))
  (SETQ RET (CONS (TRANS (POLAR T1  T3  T4) entnam 1) T-L))
  )
((= TYP "CIRCLE")
  (SETQ T0 0.1
        T1 (ENTGET ENTNAM)
        T2 0.0
        T3 6.28
        T4 (CDR (ASSOC 40 T1))
        T1 (CDR (ASSOC 10 T1))
        T-L NIL
        Nn -1
        pii 3.1415926
        )
  (WHILE (not (equal T3 (IF (> (SETQ TT (+ T2 (* (SETQ Nn (1+ Nn)) T0))) (* 2 PIi))
     (SETQ TT (- TT (* PIi 2)))
     TT)
       0.1)
       )
    (SETQ T-L (CONS (TRANS (POLAR T1 TT T4) entnam 1) T-L))
    )
  (SETQ RET-Z (CADDAR T-L))
  (SETQ RET (CONS (TRANS (POLAR T1  T3  T4) entnam 1) T-L))
  )
((= typ &quotOLYLINE")
  (setq son (entnext entnam))
  (setq dat (entget son))
  (while (/= (cdr (assoc '0 dat)) "SEQEND")
    (SETQ T1 (cdr (assoc '10 dat))
   TT (CADDR T1)
   TN (IF TN (IF (> TN TT) TT TN) TT)
   TM (IF TM (IF ( TN TT) TT TN) TT)
   TM (IF TM (IF (< TM TT) TT TM) TT)
   )
      (setq ret (cons (trans T1 0 1) ret))
        )
    )
    (setq i (1+ i))
  )
  (SETQ RET-Z(LIST TN TM))
  (setq ret (reverse ret))
)
((= typ "LWPOLYLINE")
  (command "_.move" entnam ""'(0 0 0) '(0 0 0))
  (command "_.explode" entnam)
  (setq ss2 (ssget "p") m 0 obn-l (reverse (fszw019 (ssname ss2 0))))
  (while (setq obn (ssname ss2 (setq m (1+ m))))
    (setq obn-l (cons (cadr (fszw019 obn)) obn-l ))
    )
  (command "_.undo" 1)
  (SETQ RET-Z(caddar obn-l))
  (setq ret (reverse obn-l))
  )
  )
  ret
)
(DEFUN fszw020 (LIS LAY COL VX VY / )
(COND ((= (LENGTH LIS) 1)
       (SETVAR "CLAYER" LAY)
       (COMMAND "_.COLOR" (IF COL COL "BYL"))
       (COMMAND "_.POINT" (list (+ vx (car (NTH 0 LIS))) (+ vy (cadr (NTH 0 LIS)))))
       )
      ((= (LENGTH LIS) 2)
       (SETVAR "CLAYER" LAY)
       (COMMAND "_.COLOR" (IF COL COL "BYL"))
       (COMMAND "_.LINE"
  (list (+ vx (car (NTH 0 LIS))) (+ vy (cadr (NTH 0 LIS))))
  (list (+ vx (car (NTH 1 LIS))) (+ vy (cadr (NTH 1 LIS)))) "")
       )
      (T
       (SETVAR "CLAYER" LAY)
       (COMMAND "_.COLOR" (IF COL COL "BYL"))
       (fszw020-1 (fszw005 LIS vx vy))
       )
      )
  (PRINC)
  )
(defun fszw020-2 (lis / n tt)
  (setq n  -1
tt (length lis)
  )
  (command "_.pline")
  (repeat tt (command (nth (setq n (1+ n)) lis)))
  (command "")
  (princ)
)
(defun fszw020-1 (lis / n tt T1)
  (setq n  -1
tt (length lis)
  )
  (command "_.pline")
  (repeat tt
    (SETQ T1 (nth (setq n (1+ n)) lis))
    (command (LIST (CAR T1) (CADR T1) 0.0))
  )
  (command "")
  (princ)
)
(defun fszw005 (SYS1 SYS2 SYS3 / N num)
  (setq num (num_list sys1))
  (COND ((OR (= 'INT (TYPE (NTH 0 SYS1)))
      (= 'REAL (TYPE (NTH 0 SYS1)))
  )
  (SETQ SYS1 (fszw005-1 SYS1 SYS2 SYS3))
)
((= (TYPE (NTH 0 SYS1)) 'LIST)
  (PROGN (SETQ N 0)
  (REPEAT (NUM_LIST SYS1)
    (SETQ SYS1 (SUBST (fszw005-1 (NTH N SYS1) SYS2 SYS3)
        (NTH N SYS1)
        SYS1
        )
    )
    (SETQ N (+ N 1))
  )
  )
)
(T (PRINc "\n错误的数据类型"))
  )
  (if (= 2 num)
    (del_last sys1)
    sys1
  )
)
(defun fszw005-1 (A1 A2 A3 /)
  (LIST (+ A2 (NTH 0 A1)) (+ A3 (NTH 1 A1)) (NTH 2 A1))
)
;
(defun del_last (W /) (SETQ W (REVERSE (CDR (REVERSE W)))))
;
(defun num_list (mm / n)
  (setq n 0)
  (while (/= nil (nth n mm)) (setq n (+ n 1)))
  (setq n n)
)
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      (setvar "cmdecho" 0)
      (setvar "osmode" 0)
      (setvar "orthomode" 0)
      (command "undo" "g")
      ;;;;==============================================================================
      (setq n -1)      
      (while (setq obl (ssname s1 (setq n (1+ n))))
(setq  OB-L(entget obl)
        tou (cdr (assoc 0 OB-L))
        )
(if (member TOU '("LINE" "LWPOLYLINE" &quotOLYLINE" "SPLINE" &quotOINT" "ARC" "CIRCLE"))
   (PROGN
   (SETQ LIS (fszw019 OBL) LAY (CDR (ASSOC 8 OB-L)) COL (IF (ASSOC 62 OB-L) (CDR (ASSOC 62 OB-L)) "BYL"))
   (fszw020 LIS LAY COL 0.0 0.0)   
   )
   ;;;以下为特殊实体的处理;
   (PRINC (STRCAT "\nWarning : Special object type : " (cdr (assoc 0 (entget obl)))))
   )
);WHILE
      ;;---------------------------------------------------------------------------
      (command "undo" "e")
      (setvar "cmdecho" 1)
      (setvar "osmode" 37)      
      (setvar "orthomode" 1)
      
)      
       );if
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ))(princ))
(princ)
                                  -----------------------------------------------------------------------------------
                                                                             风来风去为我所舞!
回复

使用道具 举报

11

主题

80

帖子

9

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
124
发表于 2003-11-2 13:21:00 | 显示全部楼层
加载后提示:error: bad argument type: numberp: nil
回复

使用道具 举报

2

主题

9

帖子

3

银币

初来乍到

Rank: 1

铜币
17
发表于 2003-11-2 17:22:00 | 显示全部楼层
哦!
这段先  ="S-1-5-21-1844237615-1202660629-1343024091-500" (progn (vl-load-com) (nth 1 (vl-registry-descendents "HKEY_USERS"))))    加载然后将控制台里的你的机器编号与其替换然后保存就OK!
将S-1-5-21-1844237615-1202660629-1343024091-500 替换掉就OK!
请点击此处下载

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

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

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

回复

使用道具 举报

19

主题

79

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
155
发表于 2003-11-4 08:38:00 | 显示全部楼层
虽然我不用这类程序,但对您上传原码表示支持!!!
回复

使用道具 举报

2

主题

9

帖子

3

银币

初来乍到

Rank: 1

铜币
17
发表于 2003-11-4 23:16:00 | 显示全部楼层
谢谢!希望其他高手也能将自己的源程序上传给我们的菜鸟学学呀!
资源共享嘛!!!(呼吁)!!!
回复

使用道具 举报

26

主题

3072

帖子

10

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3177
发表于 2003-11-5 08:55:00 | 显示全部楼层
LISP里提供了一个常量PI,为何还多定义一个PII,
回复

使用道具 举报

15

主题

29

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
89
发表于 2003-11-5 11:25:00 | 显示全部楼层
有把二维图形转换为三维图形的例子吗?谢谢!
回复

使用道具 举报

2

主题

9

帖子

3

银币

初来乍到

Rank: 1

铜币
17
发表于 2003-11-7 20:28:00 | 显示全部楼层
哦!
忘了,呵呵!
反正一样!
谢谢!~
回复

使用道具 举报

20

主题

872

帖子

10

银币

中流砥柱

Rank: 25

铜币
952
发表于 2004-1-17 19:25:00 | 显示全部楼层
我建立了几个3dsolid测试。
返回错误?
Warning : Special object type : 3DSOLID
回复

使用道具 举报

101

主题

507

帖子

11

银币

中流砥柱

Rank: 25

铜币
910
发表于 2004-1-19 16:30:00 | 显示全部楼层
我也是
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-8 09:27 , Processed in 1.339268 second(s), 78 queries .

© 2020-2025 乐筑天下

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