明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1153|回复: 5

fff子程序如何编写??

[复制链接]
发表于 2008-1-8 19:44 | 显示全部楼层 |阅读模式

有一段LISP程序如下:    请问fff子程序如何编写?这个程序运行不了!    fff子程序不知道怎么回事??

(defun c:xbg(/ #os #a #b #po #p1 #p2 #p3 #p4 #biao #dimsc ##pst ##pen ##pce)
  (setvar "cmdecho" 0)
  (setq #dimsc (getvar "dimscale"))
  (if (= #dimsc 0.0) (setq #dimsc 1.0))
  (setq #os (getvar "osmode"))
  (if (/= (setq ##s1 (nentsel)) nil)
    (progn (fff ##s1);调用(fff)子程序提取提取线两端点及拾取点信息
      (setq #jl1 (distance ##pst ##pce) #jl2 (distance ##pce ##pen))
      (if (> #jl1 #jl2)
 (setq #a (angle ##pst ##pen) #p0 ##pen)
 (setq #a (angle ##pen ##pst) #p0 ##pst)
 );if
      );progn
    (progn
      (setvar "osmode" 32)
      (setq #p0 (getpoint "基点:"))
      (setvar "osmode" 0)
      (SETVAR "ORTHOMODE" 1)
      (setq #p1 (getpoint #p0 "方向:"))
      (setq #a (angle #p0 #p1))
      );pogn
    );if
  (setvar "osmode" 0)
  (command "_layer" "S" "JDM" "")
  (setq #p1 (polar #p0 #a (* #dimsc 6.0)))
  (command "_pline" #p0 "w" 0.0 0.0 #p1 "l" (* #dimsc 4.0) "")
  (if (and (> #a (/ pi 2.0)) (<= #a (/ (* 3 pi) 2)))
    (setq #b 1.0) (setq #b -1.0)
    );if
  (setq #p4 (polar #p1 (+ #a (* #b (/ pi 3.0))) (* #dimsc 3)))
  (setq #p2 (polar #p1 (+ #a (* #B (/ (* pi 2.0) 3.0))) (* #dimsc 3)))
  (setq #p3 (polar #p4 #a (* #dimsc 5)))
  (setq #p3 (polar #p3 (+ #a (* #b (/ pi 2.0))) (* #dimsc 2)))
  (IF (and (> #a (/ pi 2.0)) (<= #a (/ (* 3 pi) 2)))
    (setq #a (- #a pi))
    );if
  (command "_pline" #p4 #p1 #p2 #p4 "l" (* #dimsc 11) "")
  (setq #biao (getstring "标高:"))
  (if (= (atof #biao) 0.0)
    (setq #biao "%%p0.000")
    );if
  (command"_text" "j" "m" #p3 (* #dimsc 3.5) #a #biao)
  (setvar "osmode" #os)
  (princ)
  );end_defun_c:xbg

发表于 2008-1-9 09:30 | 显示全部楼层
(defun fff (=L= / enDat)   ; 假定是线
   (setq ##pce (cadr =L=)
         enDat (entget (car  =L=))
         ##pst (cdr (assoc 10 enDat))
         ##pen (cdr (assoc 11 enDat))
  )
)         
;;臆测如是?
 楼主| 发表于 2008-1-9 11:05 | 显示全部楼层

命令: xbg
选择对象: nil; 错误: 参数类型错误: 二维/三维点: nil

这是什么原因???

 楼主| 发表于 2008-1-9 11:07 | 显示全部楼层

命令: xbg
命令: xbg
选择对象: nil; 错误: 参数类型错误: 二维/三维点: nil    请问是什么原因??

(defun fff(##s1 / ##a ##b1 ##b2 ##d1 ##d2 ##d ##e1 ##lty ##c ##cc ##sa)
  (setvar "cmdecho" 0)
  ;;;(setq ##s1 (entsel "选择线>:")) (terpri)
  (setq ##sa (car ##s1))
  (setq ##pce (car (cdr ##s1)))
  (setq ##pce (osnap ##pce "nea"))
  ;;;(setq ##pce (list (car ##pce) (cadr ##pce)))
  (setq ##e1 (entget ##sa))
  (setq #lty (cdr (assoc 0 ##e1)))
  (cond
    ((= ##lty "LINE")
     (setq ##pst (cdr (assoc 10 ##e1)))
     (setq ##pen (cdr (assoc 11 ##e1))));line
    ((= ##lty "VERTEX")
     (setq ##pst (cdr (assoc 10 ##e1)))
     (setq ##c (entget (entnext ##sa))) (setq ##cc (cdr (assoc 0 ##c)))
     (if (= ##cc "VERTEX") (setq ##pen (cdr (assoc 10 ##c))))
     (if (= ##cc "SEQEND")
       (setq ##pen (cdr (assoc 10 (entget (entnext (cdr (assoc -2 ##c))))))))
     );vertex
    ((= ##lty "LWPOLYLINE")
     (setq ##a (cdr (assoc 90 ##e1)) ##b1 (assoc 10 ##e1))
     (while (> ##a 1)
       (setq b2 (nth 4 (member ##b1 ##e1)))
       (setq ##pst (cdr ##b1) ##pen (cdr ##b2))
       (setq ##d1 (distance ##pce ##pst) ##d2 (distance  ##pce ##pen))
       (setq ##d (distance ##pst ##pen))
       (if (and (> (+ 0.001 ##d) (+ ##d1 ##d2)) (< (- ##d 0.001) (+ ##d1 ##d2)))
  (progn (setq ##a 1)
    );progn
  (setq ##b1 ##b2)
  );end if
       (setq ##a (- ##a 1))
       );end while
     (setq ##pst (list (car ##pst) (cadr ##pst) 0.0))
     (setq ##pen (list (car ##pen) (cadr ##pen) 0.0))
     );lwpolyline
    (t (prin1 ##lty));t
    );end cond
  ;(setq ##pst (list (car ##pst) (cadr ##pst)))
  ;(setq ##pen (list (car ##pen) (cadr ##pen)))
  (setvar "osmode" 0)
  (princ)
  );end_defun_fff

发表于 2008-1-9 12:36 | 显示全部楼层
##pce 应该是中点,##pst应该是起点,##pen应该是终点
 楼主| 发表于 2008-1-9 14:26 | 显示全部楼层

楼上的楼主说的没错!    ##pce 应该是中点,##pst应该是起点,##pen应该是终点

你知道我的fff子程序问题出现在那里??

命令: xbg
选择对象: nil; 错误: 参数类型错误: 二维/三维点: nil    请问是什么原因

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-10 23:47 , Processed in 0.129435 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表