Đến nội dung


Hình ảnh
- - - - -

[ YÊU CẦU] : Lisp chèn đối tượng theo lý trình


  • Please log in to reply
20 replies to this topic

#1 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 01 March 2012 - 11:27 AM

Nhờ các bác viết hộ e nhé.yêu cầu của em cũng giống như lệnh chèn cọc theo lý trình trong nova.các bác xem trong bản vẻ kèm theo.thank cadviet :)
http://www.cadviet.c...5848_chen_1.dwg
Hình đã gửi
  • 0

#2 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 March 2012 - 11:49 AM

Đề bài không khó nhưng yêu cầu chưa đủ rõ ràng. Ảnh minh họa của bạn đâu ? Đầu vào đầu ra như thế nào ? Điểm đầu - cuối của đường dẫn lisp xác định như thế nào? Xác định xong rồi thì chặt đối tượng gốc hay copy đối tượng gốc ra chỗ mới rồi chặt ? Chặt đối tượng thì phần còn lại có giữ không ? Copy ra cái mới thì chọn điểm đặt mốc ntn ? Có phải ghi text ghi chú hay không ?.....
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#3 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 01 March 2012 - 02:16 PM

thank ketxtu.hi. yêu cầu của mình như sau:
Chọn đường bất kì.
Xác định điểm đầu A hoặc không (theo mặc định của đường mình vẽ trong cad).
Nhập lý trình của các điểm D1, D2, D3...
Kết quả: ---> Đánh dấu các điểm D1, D2, D3 bằng circle hoặc insert block tại các điểm đó.
PS: nếu được xuất 2 cột text ghi chú như sau cho e thống kê:
Tên Điểm Lý trình
D1 d1
D2 d2
.......
Ko move, ko xóa, ko chặt j đường AB bác ketxu nhé. :)
  • 0

#4 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 March 2012 - 02:20 PM

Trên hình của bạn lại không có điểm D mới dở chứ :) Rồi điền lý trình thì điền vào đâu ?
Với lại, mình là dân ngoại đạo, bạn tiện thì giải thích luôn cho mình Lý trình điểm D1 bằng khoảng cách A-> D1, còn từ điểm D2 thì ....? :)
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#5 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 01 March 2012 - 02:32 PM

mình update hình mới rùi đó ketxu. lý trình thì nhập số liệu từ bàn phím thôi.:) ko phải điền. D2 thì từ A ->D2, D3 thì từ A->D3....mong ketxu ra tay
  • 0

#6 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 March 2012 - 03:12 PM

OK :) Tối về nếu chưa ai viết giùm bạn thì mình viết. Giờ mình phải đi công trường rồi. Gluck :)
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#7 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 01 March 2012 - 03:53 PM

Theo mình thì cái lisp này của bác ssg dùng linh hoạt cho mọi trường hợp rất chi là ok đấy.

(defun C:POC( / c p1 oldos ph k d1 dh p2) ;;;Point On Curve
(vl-load-com)
(setq
c (car (entsel "\nChon curve:"))
p1 (getpoint "\nDiem chuan tren curve:")
oldos (getvar "osmode")
)
(entmake (list (cons 0 "POINT") (cons 10 p1)))
(setvar "osmode" 512)
(setvar "pdmode" 34)
(setq
ph (getpoint p1 "\nDiem dinh huong tren curve:")
k (getreal "\nKhoang cach:")
d1 (vlax-curve-getDistAtPoint c p1)
dh (vlax-curve-getDistAtPoint c ph)
)
(if (> dh d1) (setq d2 (+ d1 k)) (setq d2 (- d1 k)))
(setq p2 (vlax-curve-getPointAtDist c d2))
(entmake (list (cons 0 "POINT") (cons 10 p2)))
(setvar "osmode" oldos)
(princ)
)
Theo mình thì cái lisp này của bác ssg dùng linh hoạt cho mọi trường hợp rất chi là ok đấy.

(defun C:POC( / c p1 oldos ph k d1 dh p2) ;;;Point On Curve
(vl-load-com)
(setq
c (car (entsel "\nChon curve:"))
p1 (getpoint "\nDiem chuan tren curve:")
oldos (getvar "osmode")
)
(entmake (list (cons 0 "POINT") (cons 10 p1)))
(setvar "osmode" 512)
(setvar "pdmode" 34)
(setq
ph (getpoint p1 "\nDiem dinh huong tren curve:")
k (getreal "\nKhoang cach:")
d1 (vlax-curve-getDistAtPoint c p1)
dh (vlax-curve-getDistAtPoint c ph)
)
(if (> dh d1) (setq d2 (+ d1 k)) (setq d2 (- d1 k)))
(setq p2 (vlax-curve-getPointAtDist c d2))
(entmake (list (cons 0 "POINT") (cons 10 p2)))
(setvar "osmode" oldos)
(princ)
)

  • 2

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#8 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 01 March 2012 - 05:08 PM

thank bác duy và bác ssg. Lisp này e dùng thấy cũng ok rồi.Mong các bác edit sao cho nhập liên tục được lý trình thì hay quá. Cứ 1 điểm lại nhập 1 lần lệnh thì cũng căng ghê. Tại số lượng điểm của e rất lớn. thank các bác.Hehe. Và xin các bác đánh dấu các điềm đó bằng circle hoặc line dùm e. Dùng point như trong lisp Poc thế là lisp format luôn point có sẳn của em luôn.:D
  • 0

#9 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 01 March 2012 - 11:57 PM


;; free lisp from cadviet.com
;;; this lisp was downloaded from http://www.cadviet.com/forum/index.php?showtopic=62370&hl=&fromsearch=1
(defun c:lt(/ lst lt pt curve txtsiz msp i)
(grtext -1 "Free from Cadviet @Ketxu")
(command "undo" "be")
(vl-load-com)
(mapcar 'set '(curve pt) (nentselp "\nPick start point:"))
(setq isFirst (< (distance (vlax-curve-getStartPoint curve) pt)(distance (vlax-curve-getEndPoint curve) pt)) i 0
ln (vlax-curve-getDistAtParam curve (vlax-curve-getEndParam curve ))
)
(while (and (setq lt (getreal (strcat "\nNhap ly trinh diem thu " (itoa (setq i (1+ i))) " : "))) (< lt ln))
(entmake
(list (cons 0 "CIRCLE")
(cons 10 (vlax-curve-getPointAtDist curve (if isFirst lt (- ln lt))))
(cons 40 0.1) ;Kich thuoc vong tron
)
)
(setq lst (cons (cons i lt) lst))
)
(setq pt (getpoint "\nDiem dat bang thong ke:")
txtsiz (* (getvar "dimtxt")(getvar "dimscale"))
msp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(foreach e (reverse lst)
(vla-addtext msp (itoa (car e)) (vlax-3d-point pt) txtsiz)
(vla-addtext msp (rtos (cdr e) 2 2) (vlax-3d-point (polar pt 0 (* 5 txtsiz))) txtsiz )
(setq pt (polar pt (/ pi -2) (* 1.5 txtsiz)))
)
(command "undo" "en")
)


  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#10 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 02 March 2012 - 07:58 AM

Bác ketxu nhiệt tình ghê.12h đêm vẫn làm việc.thank bác.mà bác ơi lisp LT này ko chạy được với các đường cong như spline hay arc thì phải.bác fix lại dùm e cái.
  • 0

#11 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 02 March 2012 - 08:39 AM

Bác ketxu nhiệt tình ghê.12h đêm vẫn làm việc.thank bác.mà bác ơi lisp LT này ko chạy được với các đường cong như spline hay arc thì phải.bác fix lại dùm e cái.

Không sao, vì yêu cầu này nói chung cũng có nhiều cái na ná rồi, mình copy paste 10p là xong ý mà. Đã sửa lại bên trên, bạn down lại nhé (do đêm qua gà gật k nhớ SPLINE k có property Length)

Lưu ý là mình code nhanh, k bắt lỗi. Phương pháp chọn vừa là pick điểm đầu + chọn đối tượng luôn trong 1 thao tác, nếu bạn không thích thì có thể tách ra :)
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#12 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 02 March 2012 - 09:48 AM

Bác ketxu xem dùm mình bản vẽ này.có cái tim đường mà sao dùng lisp lt nó hok nhận nhỉ.hic.cám ơn sự nhiệt tình của mod ketxu nhé.
http://www.cadviet.c...48_drawing2.dwg
  • 0

#13 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 02 March 2012 - 10:47 AM

Đường 3D polyline lisp không thao tác được :) Bạn chuyển nó về 2D PLine thì ok
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#14 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 02 March 2012 - 02:39 PM

Ketxu xem lai dùm mình. 2D pline mà.
  • 0

#15 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 02 March 2012 - 09:10 PM

Bạn explode ra rồi nối lại bằng Pedit, sau đó thao tác với lisp bình thường
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#16 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 05 March 2012 - 11:11 AM

Phiền bác ketxu lần nữa quá.bác mod lại dùm em.chả là số lượng điểm lớn quá mà mark bằng circle ko thì chỉ cần lơ đãng tí thôi là e lộn hết.Hic.ở mỗi điểm ngoài mark bằng circle bác có thể thêm text ghi chú là D1 d1 ... giống như phần thống kê ấy.hi.xin lỗi vì yêu càu nhỏ giọt quá.lúc làm mới thấy phát sinh nhiều vấn đề. :)
  • 0

#17 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 05 March 2012 - 11:39 AM

Tọa độ mark ???
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#18 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 05 March 2012 - 01:49 PM

tức là thế này ketxu a.bên cạnh việc đánh dấu bằng circle.bác chèn cho em số thứ tự và lý trình của điểm đó luôn.như hình vầy nè ketxu.Hình đã gửi
  • 0

#19 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5678 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 05 March 2012 - 02:14 PM

Mình đã hỏi là nó đánh vào đâu ? Trái phải trên giữa hay chính tâm cái vòng tròn ?
  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#20 soluuhuong2903

soluuhuong2903

    biết vẽ rectang

  • Members
  • PipPip
  • 87 Bài viết
Điểm đánh giá: 22 (tàm tạm)

Đã gửi 05 March 2012 - 02:26 PM

:D chính giữa bên trên tâm vòng tròn nhé ketxu
thank ketxu.
  • 0