Đến nội dung


Hình ảnh
* * * - - 17 Bình chọn

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)


  • Please log in to reply
2854 replies to this topic

#521 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 12 October 2010 - 04:01 PM

không phải bác ạ. Cái đó e sửa theo lời bác Tue rồi mà chạy vẫn báo lỗi. Đây là đoạn líp e đã sửa.

.........

Bạn tham khảo bài của bác Bình

......................
1/- Các bác nên cố gắng trình bày cái lisp theo các dòng càng ngắn càng tốt. Điều này sẽ giúp cho việc hiển thị lisp trong khung code box gọn lại, tạo thuận lợi cho các thành viên khi tham khảo lisp. Tỷ như cái lisp của bác có những dòng code quá dài, khiến cho việc hiển thị nó trên màn hình của codebox vượt quá khổ. Khi đọc lisp phải chạy chuột qua lại rất ức chế vì có khi chỉ vì một vài dòng như vậy mà người đọc phải chạy chuột qua lại tới méo cả mồm các bác ạ.
Cũng vì lẽ này nên mình đã mạn phép bác tự edit các dòng code này thành hai hoặc ba dòng cho nó dễ đọc, mong các bác chớ giận.

.................

1 vài lỗi (chữ màu đỏ)

1- (while (not ssbv)
(setq ssbv (ssget "\nChon ban ve: ")))

hàm ssget không cho phép chèn dòng nhắc như hàm Entsel

2- (setq off_set (polar pt21 (/ pi 2) khoangcach))
(command "OFFSET" el2 off_set);offset

biến off_set là tọa độ điểm

3- ;----- Chia truong hop cao va dai
(if (> dis121 dis141)
(command "ALIGN" khungten "" kmid41 mid141 kmid23 mid231 "" "Y" "");T
(command "ALIGN" khungten "" kmid34 mid341 kmid12 mid121 "" "Y" "");F
) ;if

chưa khai báo biến khungten ?
  • 1

#522 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 12 October 2010 - 04:25 PM

không phải bác ạ. Cái đó e sửa theo lời bác Tue rồi mà chạy vẫn báo lỗi. Đây là đoạn líp e đã sửa.

(defun BatDau() (setq OldOs (getvar "osmode")) (setvar "osmode" 0))

(defun KetThuc() (setvar "osmode" OldOs)(princ))

;=========== Lap Khung Ten ===========;

;====================================;
(defun c:khung (/ dis121 dis141 rpt11 rpt21 rpt31 rpt41 mid121 mid231 mid341 mid411 off_set bn bp
ssbv kmid12 kmid23 kmid34 kmid41 sel entkt Rec Rec1 pt1 pt2 rpt1 rpt2 rpt3 rpt4 mid12 mid23
mid34 mid41 dis12 dis14 dis toadodinh khoangcach i el1 el2 el3 el4 ssd en OldOs OldEcho )
(vl-load-com)
(setq OldEcho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "undo" "be")
(princ "\n © nguyentuyen6 @CadViet ")
(princ "\n Cai Express-Tools truoc khi su dung!!!")
;====================;
;;;XU LY KHUNG TEN;;;;
;====================;
(setq sel (entsel "\nChon block khung ten: "))
(setq entkt (car sel))
;(setq khungten (ssget "\nChon khung ten: "))
(setq Rec (acet-ent-geomextents entkt)
pt1 (nth 0 Rec) ;lay dinh *-----pt2
pt2 (nth 1 Rec));lay dinh | khung |
; pt1-----*
;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai
(BatDau)
(command "RECTANG" pt1 pt2)
(KetThuc)
(setq el1 (entlast));el1

;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh (acet-geom-vertex-list el1); rpt4----rpt3
rpt1 (nth 0 toadodinh);lay dinh | el1 |
rpt2 (nth 1 toadodinh);lay dinh rpt1----rpt2
rpt3 (nth 2 toadodinh);lay dinh
rpt4 (nth 3 toadodinh);lay dinh
mid12 (list (/ (+ (car rpt1) (car rpt2)) 2) (/ (+ (cadr rpt1) (cadr rpt2)) 2));trung diem
mid23 (list (/ (+ (car rpt2) (car rpt3)) 2) (/ (+ (cadr rpt2) (cadr rpt3)) 2))
mid34 (list (/ (+ (car rpt3) (car rpt4)) 2) (/ (+ (cadr rpt3) (cadr rpt4)) 2))
mid41 (list (/ (+ (car rpt4) (car rpt1)) 2) (/ (+ (cadr rpt4) (cadr rpt1)) 2))
dis12 (distance rpt1 rpt2); khoang cach
dis14 (distance rpt1 rpt4)
);setq
;--
(setq kmid12 (polar mid12 (/ pi 2) (/ (* dis14 4) 100))
kmid34 (polar mid34 (/ (* pi 3) 2) (/ (* dis14 4) 100))
kmid23 (polar mid23 pi (/ (* dis12 20) 140))
kmid41 (polar mid41 0.0 (/ (* dis12 6) 140))
)
(command "ERASE" el1 "");xoa hcn

;====================;
;;;XU LY BAN VE;;;;
;====================;

(setq bn (rtos (fix (* (getvar "CDATE") 100000)) 2 0)); block ban ve
; (setq bp (getpoint "\nBase Point <0,0,0>: "))
; bp (setq bp '(0 0 0)))
(while (not ssbv)
(setq ssbv (ssget "\nChon ban ve: ")))
(command "_.BLOCK" bn kmid41 ssbv ""
"_.INSERT" bn kmid41 1 1 0)
(setq el4 (entlast));el4
;----
(setq Rec1 (acet-ent-geomextents el4)
pt11 (nth 0 Rec1);lay dinh *-----pt2
pt21 (nth 1 Rec1));lay dinh | bve |
; ii 0);setq pt1-----*
;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai
(BatDau)
(command "RECTANG" pt11 pt21)
(KetThuc)
(setq el2 (entlast));el2

;-----khoang cach mac dinh
(setq khoangcach (getreal "\nKhoang cach khung ten va ban ve:"))
(if (= khoangcach nil) (setq khoangcach (/ (* dis12 5) 140)))
;---
(setq off_set (polar pt21 (/ pi 2) khoangcach))
(command "OFFSET" el2 off_set);offset
(setq el3 (entlast));el3
;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh1 (acet-geom-vertex-list el3); rpt4----rpt3
rpt11 (nth 0 toadodinh1);lay dinh | bve |
rpt21 (nth 1 toadodinh1);lay dinh rpt1----rpt2
rpt31 (nth 2 toadodinh1);lay dinh
rpt41 (nth 3 toadodinh1);lay dinh
;--
;lay trung diem
mid121 (list (/ (+ (car rpt11) (car rpt21)) 2) (/ (+ (cadr rpt11) (cadr rpt21)) 2))
mid231 (list (/ (+ (car rpt2) (car rpt31)) 2) (/ (+ (cadr rpt21) (cadr rpt31)) 2))
mid341 (list (/ (+ (car rpt3) (car rpt41)) 2) (/ (+ (cadr rpt31) (cadr rpt41)) 2))
mid411 (list (/ (+ (car rpt4) (car rpt11)) 2) (/ (+ (cadr rpt41) (cadr rpt11)) 2))

;--
dis121 (distance rpt11 rpt21)
dis141 (distance rpt11 rpt41));setq
;----- Chia truong hop cao va dai
(if (> dis121 dis141)
(command "ALIGN" khungten "" kmid41 mid141 kmid23 mid231 "" "Y" "");T
(command "ALIGN" khungten "" kmid34 mid341 kmid12 mid121 "" "Y" "");F
) ;if
;-----
(command "ERASE" el2 "");xoa hcn
(command "ERASE" el3 "");xoa hcn offset
(command "EXPLODE" el4 "")
;---------------
(command "undo" "e")
(KetThuc)
(setvar "cmdecho" OldEcho)
(princ "\n...Done...")
(princ)
);defun

Bạn viết code hoa cả mắt mới tìm thấy lỗi. Bạn sai cơ bản tại dòng này (setq ssbv (ssget "\nChon ban ve: ")) hàm ssget không có đối số
BS: Các bác port nhanh quá chưa kịp refresh xem có ai trả lời chưa.
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#523 quangtvxd

quangtvxd

    biết zoom

  • Members
  • Pip
  • 18 Bài viết
Điểm đánh giá: 1 (bình thường)

Đã gửi 12 October 2010 - 05:41 PM

Xin hỏi, mình dùng lệnh mslide để tạo các slide hình ảnh, rồi dùng lisp để tạo menu hình ảnh đó, nhưng sao có nhiều slide vẫn không hiện trong menu hình ảnh (mình tạo 50 slide thì có chừng 7 slide không hiện), không biết là lỗi gì, ai biết thì tư vấn mình với, cám ơn nha.
  • 0

#524 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 12 October 2010 - 06:18 PM

Cảm ơn các bác đã giúp em !!!. Đây là líp em sửa lại chạy thấy kết quả cũng tốt nhưng khổ nỗi dùng đc vài lần là lại hiện bảng báo lỗi như thế này:

FATAL ERROS: commands may not be nested more than 4 deeps

Còn đây là líp:

(defun BatDau() (setq OldOs (getvar "osmode")) (setvar "osmode" 0))

(defun KetThuc() (setvar "osmode" OldOs)(princ))

;=========== Lap Khung Ten ===========;

;====================================;
(defun c:khung (/ pt11 pt21 khungten dis121 dis141 rpt11 rpt21 rpt31 rpt41
mid121 mid231 mid341 mid411 off_set bn bp ssbv kmid12 kmid23 kmid34
kmid41 sel entkt Rec Rec1 pt1 pt2 rpt1 rpt2 rpt3 rpt4 mid12 mid23 mid34
mid41 dis12 dis14 dis toadodinh toadodinh1 khoangcach i el1 el2 el3 el4
ssd en OldOs OldEcho )
(vl-load-com)
(setq OldEcho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "undo" "be")
;(princ "\n © nguyentuyen6 @CadViet ")
(princ "\n Cai Express-Tools truoc khi su dung!!!")
;====================;
;;;XU LY KHUNG TEN;;;;
;====================;
(setq khungten (entsel "\nChon block khung ten: "))
(setq entkt (car khungten))
(setq Rec (acet-ent-geomextents entkt)
pt1 (nth 0 Rec) ;lay dinh
pt2 (nth 1 Rec))

;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai
(BatDau)
(command "RECTANG" pt1 pt2)
(KetThuc)
(setq el1 (entlast));el1

;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh (acet-geom-vertex-list el1)
rpt1 (nth 0 toadodinh);lay dinh
rpt2 (nth 1 toadodinh)
rpt3 (nth 2 toadodinh)
rpt4 (nth 3 toadodinh)
mid12 (list (/ (+ (car rpt1) (car rpt2)) 2) (/ (+ (cadr rpt1) (cadr rpt2)) 2));trung diem
mid23 (list (/ (+ (car rpt2) (car rpt3)) 2) (/ (+ (cadr rpt2) (cadr rpt3)) 2))
mid34 (list (/ (+ (car rpt3) (car rpt4)) 2) (/ (+ (cadr rpt3) (cadr rpt4)) 2))
mid41 (list (/ (+ (car rpt4) (car rpt1)) 2) (/ (+ (cadr rpt4) (cadr rpt1)) 2))
dis12 (distance rpt1 rpt2); khoang cach
dis14 (distance rpt1 rpt4)
);setq
;--
(setq kmid12 (polar mid12 (/ pi 2) (/ (* dis14 4) 100))
kmid34 (polar mid34 (/ (* pi 3) 2) (/ (* dis14 4) 100))
kmid23 (polar mid23 pi (/ (* dis12 20) 140))
kmid41 (polar mid41 0.0 (/ (* dis12 6) 140))
)


;====================;
;;;XU LY BAN VE;;;;
;====================;

(setq bn (rtos (fix (* (getvar "CDATE") 100000)) 2 0)); block ban ve


(while (not ssbv)
(setq ssbv (ssget)))
(command "_.BLOCK" bn kmid41 ssbv ""
"_.INSERT" bn kmid41 1 1 0)
(setq el4 (entlast));el4
;----
(setq Rec1 (acet-ent-geomextents el4)
pt11 (nth 0 Rec1);lay dinh
pt21 (nth 1 Rec1))

;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai
(BatDau)
(command "RECTANG" pt11 pt21)
(KetThuc)
(setq el2 (entlast));el2

;-----khoang cach mac dinh

(setq khoangcach (/ (* dis12 15) 140))

;---
(setq off_set (polar pt21 (/ pi 2) khoangcach))
(command "offset" khoangcach el2 off_set "") ;offset
(setq el3 (entlast));el3
;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh1 (acet-geom-vertex-list el3)
rpt11 (nth 0 toadodinh1);lay dinh
rpt21 (nth 1 toadodinh1)
rpt31 (nth 2 toadodinh1)
rpt41 (nth 3 toadodinh1)
;--
;lay trung diem
mid121 (list (/ (+ (car rpt11) (car rpt21)) 2) (/ (+ (cadr rpt11) (cadr rpt21)) 2))
mid231 (list (/ (+ (car rpt21) (car rpt31)) 2) (/ (+ (cadr rpt21) (cadr rpt31)) 2))
mid341 (list (/ (+ (car rpt31) (car rpt41)) 2) (/ (+ (cadr rpt31) (cadr rpt41)) 2))
mid411 (list (/ (+ (car rpt41) (car rpt11)) 2) (/ (+ (cadr rpt41) (cadr rpt11)) 2))

;--
dis121 (distance rpt11 rpt21)
dis141 (distance rpt11 rpt41));setq
;----- Chia truong hop cao va dai
(BatDau)
(if (> dis121 dis141)
(command "ALIGN" entkt "" kmid41 mid411 kmid23 mid231 "" "Y" "");T
(command "ALIGN" entkt "" kmid34 mid341 kmid12 mid121 "" "Y" "");F
) ;if
(KetThuc)
;-----
(command "ERASE" el1 "");xoa hcn
(command "ERASE" el2 "");xoa hcn
(command "ERASE" el3 "");xoa hcn offset
(command "EXPLODE" el4 "")
;---------------
(command "undo" "e")
(setvar "cmdecho" OldEcho)
(princ "\n...Done...")
(princ)
);defun

  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#525 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 12 October 2010 - 07:27 PM

Cảm ơn các bác đã giúp em !!!. Đây là líp em sửa lại chạy thấy kết quả cũng tốt nhưng khổ nỗi dùng đc vài lần là lại hiện bảng báo lỗi như thế này:

FATAL ERROS: commands may not be nested more than 4 deeps

Còn đây là líp:

(defun BatDau() (setq OldOs (getvar "osmode")) (setvar "osmode" 0))

(defun KetThuc() (setvar "osmode" OldOs)(princ))

;=========== Lap Khung Ten ===========;

;====================================;
(defun c:khung (/ pt11 pt21 khungten dis121 dis141 rpt11 rpt21 rpt31 rpt41
mid121 mid231 mid341 mid411 off_set bn bp ssbv kmid12 kmid23 kmid34
kmid41 sel entkt Rec Rec1 pt1 pt2 rpt1 rpt2 rpt3 rpt4 mid12 mid23 mid34
mid41 dis12 dis14 dis toadodinh toadodinh1 khoangcach i el1 el2 el3 el4
ssd en OldOs OldEcho )
(vl-load-com)
(setq OldEcho (getvar "cmdecho"))
(setvar "cmdecho" 0)
(command "undo" "be")
;(princ "\n © nguyentuyen6 @CadViet ")
(princ "\n Cai Express-Tools truoc khi su dung!!!")
;====================;
;;;XU LY KHUNG TEN;;;;
;====================;
(setq khungten (entsel "\nChon block khung ten: "))
(setq entkt (car khungten))
(setq Rec (acet-ent-geomextents entkt)
pt1 (nth 0 Rec) ;lay dinh
pt2 (nth 1 Rec))

;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai
(BatDau)
(command "RECTANG" pt1 pt2)
(KetThuc)
(setq el1 (entlast));el1

;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh (acet-geom-vertex-list el1)
rpt1 (nth 0 toadodinh);lay dinh
rpt2 (nth 1 toadodinh)
rpt3 (nth 2 toadodinh)
rpt4 (nth 3 toadodinh)
mid12 (list (/ (+ (car rpt1) (car rpt2)) 2) (/ (+ (cadr rpt1) (cadr rpt2)) 2))
mid23 (list (/ (+ (car rpt2) (car rpt3)) 2) (/ (+ (cadr rpt2) (cadr rpt3)) 2))
mid34 (list (/ (+ (car rpt3) (car rpt4)) 2) (/ (+ (cadr rpt3) (cadr rpt4)) 2))
mid41 (list (/ (+ (car rpt4) (car rpt1)) 2) (/ (+ (cadr rpt4) (cadr rpt1)) 2))
dis12 (distance rpt1 rpt2); khoang cach
dis14 (distance rpt1 rpt4)
);setq
;--
(setq kmid12 (polar mid12 (/ pi 2) (/ (* dis14 4) 100))
kmid34 (polar mid34 (/ (* pi 3) 2) (/ (* dis14 4) 100))
kmid23 (polar mid23 pi (/ (* dis12 20) 140))
kmid41 (polar mid41 0.0 (/ (* dis12 6) 140))
)
;====================;
;;;XU LY BAN VE;;;;
;====================;

(setq bn (rtos (fix (* (getvar "CDATE") 100000)) 2 0)); block ban ve
(while (not ssbv)
(setq ssbv (ssget)))
(command "_.BLOCK" bn kmid41 ssbv ""
"_.INSERT" bn kmid41 1 1 0)
(setq el4 (entlast));el4
;----
(setq Rec1 (acet-ent-geomextents el4)
pt11 (nth 0 Rec1);lay dinh
pt21 (nth 1 Rec1))

;-----acet-ent-geomextents:diem thap nhat trai va cao nhat phai
(BatDau)
(command "RECTANG" pt11 pt21)
(KetThuc)
(setq el2 (entlast));el2

;-----khoang cach mac dinh

(setq khoangcach (/ (* dis12 15) 140))

;---
(setq off_set (polar pt21 (/ pi 2) khoangcach))
(command "offset" khoangcach el2 off_set "") ;offset
(setq el3 (entlast));el3
;-----lay dinh HCN = acet-geom-vertex-list
(setq toadodinh1 (acet-geom-vertex-list el3)
rpt11 (nth 0 toadodinh1);lay dinh
rpt21 (nth 1 toadodinh1)
rpt31 (nth 2 toadodinh1)
rpt41 (nth 3 toadodinh1)
;--
;lay trung diem
mid121 (list (/ (+ (car rpt11) (car rpt21)) 2) (/ (+ (cadr rpt11) (cadr rpt21)) 2))
mid231 (list (/ (+ (car rpt21) (car rpt31)) 2) (/ (+ (cadr rpt21) (cadr rpt31)) 2))
mid341 (list (/ (+ (car rpt31) (car rpt41)) 2) (/ (+ (cadr rpt31) (cadr rpt41)) 2))
mid411 (list (/ (+ (car rpt41) (car rpt11)) 2) (/ (+ (cadr rpt41) (cadr rpt11)) 2))

;--
dis121 (distance rpt11 rpt21)
dis141 (distance rpt11 rpt41));setq
;----- Chia truong hop cao va dai
(BatDau)
(if (> dis121 dis141)
(command "ALIGN" entkt "" kmid41 mid411 kmid23 mid231 "" "Y" "");T
(command "ALIGN" entkt "" kmid34 mid341 kmid12 mid121 "" "Y" "");F
) ;if
(KetThuc)
;-----
(command "ERASE" el1 "");xoa hcn
(command "ERASE" el2 "");xoa hcn
(command "ERASE" el3 "");xoa hcn offset
(command "EXPLODE" el4 "")
;---------------
(command "undo" "e")
(setvar "cmdecho" OldEcho)
(princ "\n...Done...")
(princ)
);defun

Cái này lỗi do bạn sử dụng lệnh align. Mình cũng bị trường hợp này rồi. Bạn tham khảo cái nay nhé

Để viết lisp thay thế align thì:
-Chọn đối tượng.
-Chọn điểm xuất phát 1 (a), điểm đến 1 (:cheers:.
-Chọn điểm xuất phát 2 ©, điểm đến 2 (d).
-Lấy góc ac, dài ac.
-Lấy góc bd, dài bd.
Move đối tượng từ a đến b, rotate góc bằng góc bd-ac, scale tỉ lệ dài bd/ac.

và code Ironpat của mình

Cám ơn bác Duy và bác Bình. Nhờ ơn 2 bác mà lisp cua em chay ầm ầm.


(defun nhapsolieu ()
(initget 1)
(setq goc1 (getangle p01 "chon diem thu 2 theo huong hoac nhap goc: "))
(setq goc (/ (* goc1 180) pi))
(setq xulygoc (- 45 (/ goc 2)))
(setq gocra (/ (* pi xulygoc) 180))
(setq sina (sin gocra))
(setq cosa (sqrt (- 1 (expt sina 2))))
(setq tang (/ sina cosa))
(setq a (distance p2 p3))
(setq duongcheo (* a (sqrt 2)))
(setq b (/ duongcheo (* 2 tang)))
(setq anso (- b (/ duongcheo 2)))
(setq x (* anso 2))
(setq hs (+ (/ x duongcheo) 1))
)

(defun chondoituong ()
(princ "\nchon doi tuong: ")
(setq ssa (ssget))
(command ".copy" ssa "" "0,0" "0,0")
(setq ssb (ssget "l"))
(setq n (sslength ssb))
(setq i 0)
(while (< i n)
(setq n (sslength ssb))
(setq ent (ssname ssb i))
(setq name (cadr (entget ent)))
(if (equal name '(0 . "INSERT"))
(progn
(command "explode" ent)
(setq ssc (ssget "p"))
(setq n1 (sslength ssc))
(setq i1 0)
(while (< i1 n1)
(setq ent1 (ssname ssc i1))
(setq ssb (ssadd ent1 ssb))
(setq i1 (1+ i1))
)
)
)
(setq i (1+ i))
(setq n (sslength ssb))
)
)

(DEFUN stretchblock()
(batdau)
(chondoituong)
(setq P01 (getpoint "\nChon diem chen: "))
(delblock)
(command "-Block" "vkc_temp1" "0,0" ssb "")
(command "-insert" "vkc_temp1" "0,0" "" "" "")
(setq sstt1 (entlast))
(setq sstt (ssget "l"))
(blockrectang)
(nhapsolieu)
(command "_.explode" sstt1)
(setq ss0 (ssget "p"))
(command "-block" "vkc_temp1" "y" p1 ss0 "")
(command "line" p2 p1 "")
(setq re (ssget "l"))
(command "_.move" re "" p1 p01)
(command "_.rotate" re "" p01 "45")
(command "-insert" "vkc_temp1" "r" "45" p01 "" "")
(setq blgoc (entlast))
(Command "Explode" blgoc)
(setq bl (ssget "p"))
(command "-Block" "vkc_temp2" P01 re "")
(command "-Block" "vkc_temp3" P01 bl "")
(Command "-Insert" "vkc_temp3" P01 "" hs "")
(setq dt1 (entlast))
(Command "-Insert" "vkc_temp2" P01 "" hs "")
(Command "_.Explode" "l" "")
(setq dt2 (entlast))
(setq tt1 (entget dt2))
(setq tt1 (vl-remove-if '(lambda (x) (/= 10 (car x))) tt1))
(setq dinh11 (cdr (nth 0 tt1)))
(setq quay (- 90 (/ (* (angle p01 dinh11) 180) pi)))
(setq aa (distance p01 dinh11))
(setq bb (distance p1 p2))
(setq ab (/ bb aa))
(command "_.rotate" dt1 "" p01 quay)
(command ".scale" dt1 "" p01 ab)
(command "_.erase" dt2 "")
(command "_.explode" dt1)
(delblock)
(ketthuc)
(princ)
)

(defun c:stb ()
(stretchblock)
)

(defun batdau ()
(command "undo" "be")
(setvar "cmdecho" 0)
(setq
old_er *error*
*error* myerror
)
)

(defun myerror (errmsg)
(ketthuc)
(command "undo" "")
)

(defun ketthuc ()
(setq *error* old_er)
(setvar "cmdecho" 1)
(command "undo" "e")
)
(defun delblock ()
(Command "-Purge" "B" "vkc_temp1" "Y" "Y")
(Command "-Purge" "B" "vkc_temp2" "Y" "Y")
(Command "-Purge" "B" "vkc_temp3" "Y" "Y")
)

(defun blockrectang ()
(while (setq e (ssname sstt 0))
(setq sstt (ssdel e sstt)
tmp (vla-getboundingbox (vlax-ename->vla-object e) 'p1 'p3)
p1 (vlax-safearray->list p1)
p3 (vlax-safearray->list p3)
p1 (list (car p1) (cadr p1))
p3 (list (car p3) (cadr p3))
p2 (list (car p1) (cadr p3))
p4 (list (car p3) (cadr p1))
)
)
)

Gà như mình còn viết được code này mà bon nó bán tận 27$
http://www.rayburndr...AT.html?sno=298


  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#526 duyanhhcm

duyanhhcm

    biết vẽ arc

  • Members
  • PipPip
  • 40 Bài viết
Điểm đánh giá: 8 (bình thường)

Đã gửi 13 October 2010 - 11:42 PM

Mục đích em hỏi đoạn lisp trên là để đưa thư mục đó vào Support File Searh Path mà.
Với lại còn phải cắt bớt đi một đoạn nửa.
Ý là có cách nào đọc được các thao tác khi chọn file và lưu thành chuổi hay không.

- Mình ko hiểu ý bạn lắm. nhưng thử dùng hàm (vl-filename-directory str) xem. nếu nó tìm thấy (Str) sẽ trả về đường dẫn đầy đủ (trừ file cuối cùng chứa phần mở rộng). Ví dụ (vl-filename-directory ".....duy/temp/hd6.txt") sẽ trả về kết quả là: ".....duy/temp/"
- Kết hợp hàm trên và hàm appload có thể bạn được đường dẫn đến tệp cuối cùng như ý.
  • 1
DU KHONG TIM THAY PHUOC, IT RA THAY HOA MA TRANH DI...

#527 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 18 October 2010 - 06:55 AM

Chào các bác.
Hôm nay, Tue_NV gặp phải 1 vấn đề rất lạ về vấn đề tìm giao điểm của 2 đối tượng. Rõ ràng là 2 đối tượng cắt nhau tại 2 điểm nhưng sau khi chạy Lisp -> thì nó chỉ báo có 1 giao điểm mà thôi. Thật kì lạ. Các bác có thể giải thích dùm Tue_NV được không? Mình cũng không hiểu là tại vì sao nữa?
Đây là file bị trường hợp tìm giao điểm giữa Line và Pline. Chúng cắt nhau tại 2 giao điểm nhưng tìm chỉ có được 1 giao điểm
Tìm 2 giao điểm nhưng chỉ tìm được 1 giao điểm
Lisp mà Tue_NV đang sử dụng là của bác Hoành

(defun c:giao ()
(defun GiaoDT (ent1 ent2)
(setq ob1 (vlax-ename->vla-object ent1)
ob2 (vlax-ename->vla-object ent2)
)
(setq g (vlax-variant-value
(vla-IntersectWith ob1 ob2 acExtendNone)
)
)
(if (/= (vlax-safearray-get-u-bound g 1) -1)
(setq g (vlax-safearray->list g))
(setq g nil)
)
(if g
(progn
(setq kq nil
sd (fix (/ (length g) 3))
)
(repeat sd
(setq kq (append kq (list (list (car g) (cadr g) (caddr g))))
g (cdddr g)
)
)
kq
)
nil
)
)
(setq ent1 (car (entsel "\nVao dt1: ")))
(redraw ent1 3)
(setq ent2 (car (entsel "\nVao dt2: ")))
(redraw ent1 4)
(setq giao (giaodt ent1 ent2))
(if giao
(foreach pp giao
(entmake (list (cons 0 "POINT") (cons 10 pp)))
)
(alert "2 doi tuong khong giao nhau!")
)
(princ)
)

Các bác cho Tue_NV hỏi thêm 1 chút nữa là : Tại sao có 1 file bản vẽ khi sử dụng mã lệnh
(entget(car(entsel)))-> Khi pick vào 1 Polyline thì thấy mã DXF10 chỉ có toạ độ X và Y thôi, còn Z thì không có

Ví dụ : ((-1 . ) (0 . "LWPOLYLINE") (330 .
) (5 . "654") (100 . "AcDbEntity") (67 . 0) (410 .
"Model") (8 . "0") (100 . "AcDbPolyline") (90 . 3) (70 . 1) (43 . 0.0) (38 .
0.0) (39 . 0.0) (10 -86.629 -0.254102) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10
-62.472 -16.5098) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -98.8554 -11.4853) (40 .
0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))

Muốn Lisp hiển thị cả Z nữa thì phải làm thế nào? Trong khi 1 số file khác có cả X, Y và Z. Cái này coi bộ đơn giản nhưng mà mình chưa được biết.
Đây là file dwg : http://www.mediafire...17w8i5c9zgw3blq
Rất mong các bác chỉ giúp
Tue_NV xin chân thành cảm ơn
  • 0

#528 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 18 October 2010 - 08:15 AM

Chào các bác.
Hôm nay, Tue_NV gặp phải 1 vấn đề rất lạ về vấn đề tìm giao điểm của 2 đối tượng. Rõ ràng là 2 đối tượng cắt nhau tại 2 điểm nhưng sau khi chạy Lisp -> thì nó chỉ báo có 1 giao điểm mà thôi. Thật kì lạ. Các bác có thể giải thích dùm Tue_NV được không? Mình cũng không hiểu là tại vì sao nữa?
Đây là file bị trường hợp tìm giao điểm giữa Line và Pline. Chúng cắt nhau tại 2 giao điểm nhưng tìm chỉ có được 1 giao điểm
Tìm 2 giao điểm nhưng chỉ tìm được 1 giao điểm
Lisp mà Tue_NV đang sử dụng là của bác Hoành
...................
Các bác cho Tue_NV hỏi thêm 1 chút nữa là : Tại sao có 1 file bản vẽ khi sử dụng mã lệnh
(entget(car(entsel)))-> Khi pick vào 1 Polyline thì thấy mã DXF10 chỉ có toạ độ X và Y thôi, còn Z thì không có

Ví dụ : ((-1 . ) (0 . "LWPOLYLINE") (330 .
) (5 . "654") (100 . "AcDbEntity") (67 . 0) (410 .
"Model") (8 . "0") (100 . "AcDbPolyline") (90 . 3) (70 . 1) (43 . 0.0) (38 .
0.0) (39 . 0.0) (10 -86.629 -0.254102) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10
-62.472 -16.5098) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -98.8554 -11.4853) (40 .
0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))

Muốn Lisp hiển thị cả Z nữa thì phải làm thế nào? Trong khi 1 số file khác có cả X, Y và Z. Cái này coi bộ đơn giản nhưng mà mình chưa được biết.
Đây là file dwg : http://www.mediafire...17w8i5c9zgw3blq
Rất mong các bác chỉ giúp
Tue_NV xin chân thành cảm ơn

1. Ừ, lisp chỉ cho 1 giao điểm ? Anh cũng chưa tìm đuợc nguyên nhân.

2. với LWPOLYLINE, Cad đưa cao độ vào DXF=38. (với 3DPOLYLINE thì khác)
Muốn Lisp hiển thị cả Z nữa thì kết hợp giữa DXF10 và 38.
  • 2

#529 DuongTrungHuy

DuongTrungHuy

    biết lệnh copy

  • Members
  • PipPipPip
  • 116 Bài viết
Điểm đánh giá: 41 (tàm tạm)

Đã gửi 18 October 2010 - 08:43 AM

[quote name='Tue_NV' date='Oct 18 2010, 6:55' post='112742']
Chào các bác.
Hôm nay, Tue_NV gặp phải 1 vấn đề rất lạ về vấn đề tìm giao điểm của 2 đối tượng. Rõ ràng là 2 đối tượng cắt nhau tại 2 điểm nhưng sau khi chạy Lisp -> thì nó chỉ báo có 1 giao điểm mà thôi. Thật kì lạ. Các bác có thể giải thích dùm Tue_NV được không? Mình cũng không hiểu là tại vì sao nữa?
Đây là file bị trường hợp tìm giao điểm giữa Line và Pline. Chúng cắt nhau tại 2 giao điểm nhưng tìm chỉ có được 1 giao điểm

Đường LINE của Bạn có tọa độ z/=0.0 (10 791.935 -344.495 -1.0e-008) Bạn sửa lại tọa độ z, z=0.0 là được
  • 1

#530 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 18 October 2010 - 09:12 AM

1. Ừ, lisp chỉ cho 1 giao điểm ? Anh cũng chưa tìm đuợc nguyên nhân.

2. với LWPOLYLINE, Cad đưa cao độ vào DXF=38. (với 3DPOLYLINE thì khác)
Muốn Lisp hiển thị cả Z nữa thì kết hợp giữa DXF10 và 38.

Cảm ơn anh gia_bach, cảm ơn bác DuongTrungHuy rất nhiều, thì ra nguồn gốc của cái này là sự không đồng phẳng. Lúc đó em sử dụng lệnh ID cho Line thì vẫn thấy Z=0.0 bình thường, thì ra là do sai số :lol:

Anh gia_bach, các bác có thể nói rõ hơn ý này được không?
Muốn Lisp hiển thị cả Z nữa thì kết hợp giữa DXF10 và 38.. Chỉ đơn giản là Tue_NV muốn sử dụng mã lệnh (entget(car(entsel))) thì Lisp cũng sẽ hiển thị tọa độ Z ở mã DXF10 như 1 số file trước đó. Mã DXF38 thì em chưa sử dụng đến bao giờ cả, vì sử dụng toàn là các file đều có hiển thị tọa độ Z, nay đụng phải mới biết là mình bí :lol:

Tue_NV chân thành cảm ơn
  • 0

#531 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 18 October 2010 - 09:49 AM

Cảm ơn anh gia_bach, cảm ơn bác DuongTrungHuy rất nhiều, thì ra nguồn gốc của cái này là sự không đồng phẳng. Lúc đó em sử dụng lệnh ID cho Line thì vẫn thấy Z=0.0 bình thường, thì ra là do sai số :lol:

Anh gia_bach, các bác có thể nói rõ hơn ý này được không?
Muốn Lisp hiển thị cả Z nữa thì kết hợp giữa DXF10 và 38.. Chỉ đơn giản là Tue_NV muốn sử dụng mã lệnh (entget(car(entsel))) thì Lisp cũng sẽ hiển thị tọa độ Z ở mã DXF10 như 1 số file trước đó. Mã DXF38 thì em chưa sử dụng đến bao giờ cả, vì sử dụng toàn là các file đều có hiển thị tọa độ Z, nay đụng phải mới biết là mình bí :lol:

Tue_NV chân thành cảm ơn

Đính chính : Ý của anh là khi cần cao độ Z thì lấy DXF=38 (hay Property=Elevation).
Vì LWPOLYLINE là đối tuợng đồng phẳng, CAD đưa tọa độ các đỉnh duới dạng 2D(X,Y) và cao độ Z về 1 mã DXF cho database nhẹ.
Vì hàm entget chỉ hiển thị database, nên không thể hiển thị tọa độ 3D đuợc.
Muốn có tọa độ 3D : thì kết hợp giữa DXF10 và 38.

Nhân tiện các bác tham khảo Lệnh chèn POINT tại giao điểm của 2 Đối tuợng viết bằng AutoCAD .NET với MS Visual C#
http://www.cadviet.c...o...st&p=112765
  • 1

#532 ndtnv

ndtnv

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 437 Bài viết
Điểm đánh giá: 384 (khá)

Đã gửi 20 October 2010 - 12:56 PM

Đính chính : Ý của anh là khi cần cao độ Z thì lấy DXF=38 (hay Property=Elevation).
Vì LWPOLYLINE là đối tuợng đồng phẳng, CAD đưa tọa độ các đỉnh duới dạng 2D(X,Y) và cao độ Z về 1 mã DXF cho database nhẹ.
Vì hàm entget chỉ hiển thị database, nên không thể hiển thị tọa độ 3D đuợc.
Muốn có tọa độ 3D : thì kết hợp giữa DXF10 và 38.

Nhân tiện các bác tham khảo Lệnh chèn POINT tại giao điểm của 2 Đối tuợng viết bằng AutoCAD .NET với MS Visual C#
http://www.cadviet.c...o...st&p=112765

Xin bổ sung thêm là cao độ Z =DXF38 chỉ đúng khi DXF210=(0,0,1)
DXF38 là độ dài đại số của vector từ (0,0,0) của WCS đến mặt phẳng của Polyline, với vector đơn vị là DXF210
  • 3

#533 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 20 October 2010 - 03:19 PM

Các bác cho em hỏi có đoạn code nào để tìm 1 RECTANG lớn nhất thuộc 1 block mà bên trong Rectang đó không chứa bất kỳ một đối tượng nào không nhỉ!!!!
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#534 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 October 2010 - 03:49 PM

Các bác cho em hỏi có đoạn code nào để tìm 1 RECTANG lớn nhất thuộc 1 block mà bên trong Rectang đó không chứa bất kỳ một đối tượng nào không nhỉ!!!!

Hề hề hề,
Có đấy, nhưng bạn nên gửi file chứa block đó lên và thể hiện cái kết quả bạn muốn có nó ra răng thì mới có lisp được bạn ạ. Hề hề hề....
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#535 nguyentuyen6

nguyentuyen6

    biết lệnh chamfer

  • Advance Member
  • PipPipPipPip
  • 213 Bài viết
Điểm đánh giá: 124 (tàm tạm)

Đã gửi 20 October 2010 - 03:58 PM

Download

Hình đã gửi

Đây là file up của e. E cần code lấy entname của cái Rectang màu vàng đó.
  • 0

Lisp In bản vẽ hàng loạt:
http://www.cadviet.c...ndpost&p=139860


#536 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 20 October 2010 - 11:55 PM

Download

Hình đã gửi

Đây là file up của e. E cần code lấy entname của cái Rectang màu vàng đó.

Chào bạn nguyentuyen6,
Bạn xài thử cái này nha, mình test trên file bạn gửi thì Ok còn đại trà thì chưa thử bạn ạ.

(defun c:slk ( / elb en els plst ss n i ssp en1 els1 ss1 dt a b )
(vl-load-com)
(command "undo" "be")
(setq ent (car (entsel "\n Chon block chua khung "))
elb (entget ent)
en (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 elb )))))
els (entget en)
plst (list)
)
(foreach a els
(if (= (car a) 10)
(setq plst (append plst (list (cdr a))))
)
)
(command "explode" ent )
(setq ss (ssget "wp" plst ))
(setq n (sslength ss)
i 0
ssp (list)
)
(while (< i n)
(setq en1 (ssname ss i)
els1 (entget en1)

)
(if (= (cdr (assoc 0 els1)) "LWPOLYLINE")
(progn
(setq plst (list))
(foreach b els1
(if (= (car b ) 10)
(setq plst (append plst (list (cdr b ))))
)
)
(setq ss1 (ssget "wp" plst))
(if (= ss1 nil)
(progn
(setq obj (vlax-ename->vla-object en1))
(setq dt (vlax-curve-getarea obj))
(setq ssp (append ssp (list (list dt en1))))
)
)
)
)
(setq i (1+ i))
)
ssp
(command "undo" "e")
(setq ssp (vl-sort ssp '(lambda (x1 x2) (>= (car x1) (car x2)))))
(setq edt (cadr (car ssp)))
(command "undo" 1)
edt
)

Nếu có gì chưa ổn hãy post lên nhé.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#537 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 21 October 2010 - 07:07 AM

Chào bạn nguyentuyen6,
Bạn xài thử cái này nha, mình test trên file bạn gửi thì Ok còn đại trà thì chưa thử bạn ạ.


(defun c:slk ( / elb en els plst ss n i ssp en1 els1 ss1 dt a b )
(vl-load-com)
(command "undo" "be")
(setq ent (car (entsel "\n Chon block chua khung "))
elb (entget ent)
en (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 elb )))))
els (entget en)
plst (list)
)
(foreach a els
(if (= (car a) 10)
(setq plst (append plst (list (cdr a))))
)
)
(command "explode" ent )
(setq ss (ssget "wp" plst ))
(setq n (sslength ss)
i 0
ssp (list)
)
(while (< i n)
(setq en1 (ssname ss i)
els1 (entget en1)

)
(if (= (cdr (assoc 0 els1)) "LWPOLYLINE")
(progn
(setq plst (list))
(foreach b els1
(if (= (car b ) 10)
(setq plst (append plst (list (cdr b ))))
)
)
(setq ss1 (ssget "wp" plst))
(if (= ss1 nil)
(progn
(setq obj (vlax-ename->vla-object en1))
(setq dt (vlax-curve-getarea obj))
(setq ssp (append ssp (list (list dt en1))))
)
)
)
)
(setq i (1+ i))
)
ssp
(command "undo" "e")
(setq ssp (vl-sort ssp '(lambda (x1 x2) (>= (car x1) (car x2)))))
(setq edt (cadr (car ssp)))
(command "undo" 1)
edt
)

Nếu có gì chưa ổn hãy post lên nhé.

Chào bác Bình. Đúng là chưa ổn thiệt. Cái Entity mà bác Lấy đó là đối tượng mà bác đã Explode ra. và bác đã xoa nó bằng lệnh undo

Bác kiểm tra lại code nhé.
  • 1

#538 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 21 October 2010 - 07:24 AM

Chào bạn nguyentuyen6,
Bạn xài thử cái này nha, mình test trên file bạn gửi thì Ok còn đại trà thì chưa thử bạn ạ.


(defun c:slk ( / elb en els plst ss n i ssp en1 els1 ss1 dt a b )
(vl-load-com)
(command "undo" "be")
(setq ent (car (entsel "\n Chon block chua khung "))
elb (entget ent)
en (cdr (assoc -2 (tblsearch "block" (cdr (assoc 2 elb )))))
els (entget en)
plst (list)
)
(foreach a els
(if (= (car a) 10)
(setq plst (append plst (list (cdr a))))
)
)
(command "explode" ent )
(setq ss (ssget "wp" plst ))
(setq n (sslength ss)
i 0
ssp (list)
)
(while (< i n)
(setq en1 (ssname ss i)
els1 (entget en1)

)
(if (= (cdr (assoc 0 els1)) "LWPOLYLINE")
(progn
(setq plst (list))
(foreach b els1
(if (= (car b ) 10)
(setq plst (append plst (list (cdr b ))))
)
)
(setq ss1 (ssget "wp" plst))
(if (= ss1 nil)
(progn
(setq obj (vlax-ename->vla-object en1))
(setq dt (vlax-curve-getarea obj))
(setq ssp (append ssp (list (list dt en1))))
)
)
)
)
(setq i (1+ i))
)
ssp
(command "undo" "e")
(setq ssp (vl-sort ssp '(lambda (x1 x2) (>= (car x1) (car x2)))))
(setq edt (cadr (car ssp)))
(command "undo" 1)
edt
)

Nếu có gì chưa ổn hãy post lên nhé.

Đúng là chưa ổn Bác ạ. Trong trường hợp này không dùng quay ngược thời gian được.
Bác nên duyệt qua block để lấy tên lấy điểm chèn rồi explode ra xong lại block lại như cũ là được.
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#539 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 21 October 2010 - 09:04 AM

Chào bác Bình. Đúng là chưa ổn thiệt. Cái Entity mà bác Lấy đó là đối tượng mà bác đã Explode ra. và bác đã xoa nó bằng lệnh undo

Bác kiểm tra lại code nhé.

Hề hề hê,
Chào bác Tue_NV,
Quả có vậy thiệt, do mình cứ nghĩ là trước hay sau explode thì cái ename của đối tượng vẫn không thay đổi. Mình sẽ kiểm tra lại theo cách khác xem. Vấn đề của nó còn là chạy trên bản vẽ của bạn nguyentuyen6 thì nó trả ra đối tượng được , nhưng khi insert một block khác vô thì nó lại chết ngoéo không chịu chạy, mình đang kiểm tra mà chưa phát hiện lỗi bác ạ.
Thank bác đã giúp đỡ.
@bác Phamngoctukts: Có nhẽ mình sẽ kiếm cách khác chứ không chơi thằng explode nữa bác ạ......
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#540 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 21 October 2010 - 09:17 AM

Download

Hình đã gửi

Đây là file up của e. E cần code lấy entname của cái Rectang màu vàng đó.

Bạn nguyentuyen6, ơi,
Chu choa mình ngu quá, trong lisp đã có sẵn hàm nentsel cho phép bạn truy xuất ename của các đối tượng nằm trong block mà mình quên béng đi nên sinh ra cái củ chả giống ai.
Bạn chỉ cần đơn giản là:
nhập : (setq ent (car (nentsel ))) vào dòng command.
Sau đó enter và chọn vào đối tượng khung màu vàng của bạn là nó cho bạn cái ename của khung liền mà.
Hề hề hề, chúc bạn vui.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.