Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
dunguss3581

[hỏi] vẽ pline theo danh sách.

Các bài được khuyến nghị

các bac giúp em code dể vẽ pline theo list sau:

 

(setq a(list 7.77200,0.88300 12.22800,-0.14900 -3.15200,0.16800

-1.03500,-0.16900 -4.09600,-0.17100 -7.64400,0.38000 -0.44200,-0.19300

-3.63100,0.27400)

cứ 2 số là một điểm.

thanks!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

các bac giúp em code dể vẽ pline theo list sau:

(setq a (list 7.77200,0.88300 12.22800,-0.14900 -3.15200,0.16800 -1.03500,-0.16900 -4.09600,-0.17100 -7.64400,0.38000 -0.44200,-0.19300 -3.63100,0.27400)

cứ 2 số là một điểm.

thanks!

Vẽ thì được, nhưng trước hết là cái list của bạn trả về như thế này:

(nil nil nil nil nil nil nil nil)

Bởi các phần tử trong list bạn viết chưa phù hợp.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Vẽ thì được, nhưng trước hết là cái list của bạn trả về như thế này:

(nil nil nil nil nil nil nil nil)

Bởi các phần tử trong list bạn viết chưa phù hợp.

vẽ như thế nào vậy bác? mách nước cho em với. em dùng code : (command "pline" a "") không được. mà khi em copy vào dòng nhắc lệnh lại được là sao vậy các bác?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

vẽ như thế nào vậy bác? mách nước cho em với. em dùng code : (command "pline" a "") không được. mà khi em copy vào dòng nhắc lệnh lại được là sao vậy các bác?

Copy từng phần tử thì nó chính là toạ độ điểm nên vẽ được. Còn cái list của bạn toàn nil với nil thì vẽ kiểu gì. Hơn nữa, cái cú pháp bạn đưa ra không đúng (phức tạp hơn nhiều).

Hỏi bạn: cái list đó ở đâu ra? Để tôi còn giúp cách tạo list phù hợp.

Và cuối cùng là phải dùng lisp.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Copy từng phần tử thì nó chính là toạ độ điểm nên vẽ được. Còn cái list của bạn toàn nil với nil thì vẽ kiểu gì. Hơn nữa, cái cú pháp bạn đưa ra không đúng (phức tạp hơn nhiều).

Hỏi bạn: cái list đó ở đâu ra? Để tôi còn giúp cách tạo list phù hợp.

Và cuối cùng là phải dùng lisp.

tui dang dùng lisp viết lệnh vẽ trắc ngang. đọc file số liệu ntd. vì list được tạo ra sau nhiều vòng while và khi gặp điều kiện thỏa mãn thì thực hiện lệnh vẽ pline. tui còn đang làm dở dang nhưng cũng up lên cho bác hiểu ý tưởng của tui.http://www.cadviet.c..._dau_vaontd.txt http://www.cadviet.c...6914_ketqua.dwg

(defun c:vtn ( / fn fid strht vt x y z)
 (defun pos (sub st / l1 l2 index)
(setq index 1
  l1 (strlen sub)
  l2 (strlen st)
)
(while
 	(and (<= (+ index l1 -1) l2) (/= sub (substr st index l1)))
  	(setq index (1+ index))
)
(if (= sub (substr st index l1))
 	index
 	nil
)
 )
 (princ "\neiPoint © 2007 Cadviet.com")
 (setq fn  (getfiled "Ten tep de nhap toa do x y z"
   	(getvar "dwgprefix")
   	"txt"
   	2
	)
fid (open fn "r")
 )
 (setq i 0)
 (setq point (getpoint "\n chon diem ve tn:"))
 (command "_UCS" "N" point "")
 (setq taphopdiem nil)
 (while (setq strht (read-line fid))
(setq strht (strcat strht "\t\t\t\t"))
(if (/= strht "   ")
 	(progn
(setq
  vt (pos "\t" strht)
  mot (substr strht 1 (1- vt))
  strht (substr strht (1+ vt))

  vt (pos "\t" strht)
  hai (substr strht 1 (1- vt))
  strht (substr strht (1+ vt))

  vt (pos "\t" strht)
  ba (substr strht 1 (1- vt))
  strht (substr strht (1+ vt))
  vt (pos "\t" strht)
  bon (substr strht 1 (1- vt))
  strht (substr strht (1+ vt))
)
;(princ (strcat "\t" mot "\t" hai "\t" ba "\t" bon "\n"))
 	);het progn
); het if
(cond
	((= mot "POLE")
 	(progn
   	(if (/= taphopdiem nil)
     	(progn
 	(command "pline" taphopdiem "")
;(princ taphopdiem)
)
  )
(setq
  tencon hai
  caodo (atof bon)
  taphopdiem "\n"
)
   	(princ (strcat "\n" mot "\t" hai "\t" ba "\t" bon "\n"))
 	); het progn
	)
	((or (= mot "TARGETL") (= mot "TARGETR"))
 	(progn
(setq
  kcl (atof hai)
  ccao (atof ba)
  taphopdiem(strcat (chr 32) hai "," ba taphopdiem)
 ; taphopdiem (cons pointi taphopdiem)
)
  	); het progn
 	)
); Het cond
(setq i (1+ i))

 )
 (command "_UCS" "w" "")
 (close fid)
)
(princ "\neiPoint da duoc nap. su dung 2 lenh: ExpPnt va ImpPnt de xuat va nhap Point")

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

tui dang dùng lisp viết lệnh vẽ trắc ngang. đọc file số liệu ntd. vì list được tạo ra sau nhiều vòng while và khi gặp điều kiện thỏa mãn thì thực hiện lệnh vẽ pline. tui còn đang làm dở dang nhưng cũng up lên cho bác hiểu ý tưởng của tui.http://www.cadviet.c..._dau_vaontd.txt http://www.cadviet.c...6914_ketqua.dwg

Nếu bạn thấy thuận lợi trong việc thay dấu phẩy bằng dấu cách trong cái list đầu tiên thì tôi sẽ viết cho bạn?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Nếu bạn thấy thuận lợi trong việc thay dấu phẩy bằng dấu cách trong cái list đầu tiên thì tôi sẽ viết cho bạn?

ok. anh viết giúp tui đi. điều tui cần là cú pháp làm công việc đó mà.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

ok. anh viết giúp tui đi. điều tui cần là cú pháp làm công việc đó mà.

(defun C:HA( / z lst)
(setq a (list 7.77200 0.88300 12.22800 -0.14900 -3.15200 0.16800 -1.03500 -0.16900 -4.09600 -0.17100 -7.64400 0.38000 -0.44200 -0.19300 -3.63100 0.27400))
(setq z 0)
(repeat (/ (length a) 2)
 (setq lst (cons (list (nth z a) (nth (1+ z) a)) lst))
 (setq z (+ z 2)))
(Lwpoly lst)
(princ))
(defun LWPoly (lst)
(entmake (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length lst)))
                               	(mapcar (function (lambda (p) (cons 10 p))) lst))))

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

(defun C:HA( / z lst)
(setq a (list 7.77200 0.88300 12.22800 -0.14900 -3.15200 0.16800 -1.03500 -0.16900 -4.09600 -0.17100 -7.64400 0.38000 -0.44200 -0.19300 -3.63100 0.27400))
(setq z 0)
(repeat (/ (length a) 2)
 (setq lst (cons (list (nth z a) (nth (1+ z) a)) lst))
 (setq z (+ z 2)))
(Lwpoly lst)
(princ))
(defun LWPoly (lst)
(entmake (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 100 "AcDbPolyline") (cons 90 (length lst)))
                               	(mapcar (function (lambda (p) (cons 10 p))) lst))))

cam on anh nhe

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.
Đăng nhập để thực hiện theo  

×