Chuyển đến nội dung
Diễn đàn CADViet
Jin Yong

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

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

Chào các thành viên trong Diễn đàn CadViet. Pro nào có thể viết dùm mình líp: Vẽ nết cắt, cửa đi, cửa sổ mà sau khi thực hiện xong đối tượng đước gán về layer của riêng chúng (Thực ra lip này trên Diễn dàn cũng đã có nhưng chưa tự gán layer nên mất thời gian gán lại). Thank !

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
Chào các thành viên trong Diễn đàn CadViet. Pro nào có thể viết dùm mình líp: Vẽ nết cắt, cửa đi, cửa sổ mà sau khi thực hiện xong đối tượng đước gán về layer của riêng chúng (Thực ra lip này trên Diễn dàn cũng đã có nhưng chưa tự gán layer nên mất thời gian gán lại). Thank !

 

Nếu đã có LISP rồi thì Bạn post kèm theo rồi Nhờ CADViet giúp Bạn thêm phần gán layer

 

Topic này để hỏi về LISP, nếu có yêu cầu viết LISP thì BẠn vui lòng qua topic viết LISP theo yêu cầu

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

Báo cáo các bác,

Em đang học để viết được lisp. Dưng mà khó đáo để.

Em vớ được củ lisp này trên diễn đàn, chạy thử thì ngon nhưng khi mở ra đọc thì không hiểu. Vào Developer Help đọc thì chả thấy rõ ra được điều gì mong các bác thắp giùm em cái nến để em sáng ra nhé.

 

(defun C:GED();;;Get Excel Data

(vl-load-com)

(setq

ex (vlax-get-object "Excel.Application")

sl (vlax-get-property ex 'selection)

txtvr (vlax-get-property sl 'text)

txt (vlax-variant-value txtvr)

ir (vlax-get-property sl 'row)

ic (vlax-get-property sl 'column)

)

(alert

(strcat

"\nContent: " txt

"\nColumn: " (chr (+ ic 64))

"\nRow: " (itoa ir)

)

)

)

 

Các vấn đề em thắc mắc như sau:

1/- Biến sl được gán là giá trị của hàm (vlax-get property ex ' selection). Khi selection là một cell thì hàm (vlax-get-property sl 'text) sẽ chạy được và cho ra giá trị của biến txtvr. Còn khi selection là một range gồm nhiều cells thì hàm (vlax-get-property sl 'text) cho ra giá trị của biến txtvr là nil. Như vậy biến sl phải có thuộc tính (property) là text có phải không ạ? Nếu biến sl không phải có thuộc tính là text thì làm sao biết? Ngoài thuộc tính text , biến sl còn có các thuộc tính khác, làm sao để lấy được các thuộc tính của biến sl khi nó là một range, một sheet

2/- Đọc trong Developer Help thì nó nói biến sl là một VLA-object , vậy VLA- object là gì? các mà DXF nếu có của các object này ra sao hay nó chỉ có các thuộc tính thôi?

3/- Có thể tham khảo về các vấn đề trên ở đâu ạ?

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 bác ơi,

Ăn Tết sớm thế ư? Có ai rảnh giúp em với, hu hu.

1. Chẳng ai ăn Tết lúc này! Có lẽ mọi người đang bận kiếm tiền tiêu Tết!

 

2. Đoạn trên là của ssg đã post. Nhưng hãy tạm gác cái đó lại, mời bạn sang xem cái này có lẽ hay hơn:

 

http://www.cadviet.com/forum/index.php?sho...amp;#entry42970

 

nếu có vướng mắc gì thì cũng nên thảo luận luôn ở đó.

 

3. VLA-Object là Visual LISP ActiveX Object. ActiveX là một kỹ thuật được phát triển bởi Microsoft, với mục đích để các ngôn ngữ lập trình khác nhau, môi trường khác nhau, phần mềm khác nhau có thể giao tiếp được với nhau. Ssg nhớ là đã post bài tổng quan về VLA-Object ở đâu đó rồi, bạn search chắc sẽ thấy. Ngoài ra, bạn vào Help gõ các từ khoá liên quan ở Index cũng thấy.

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

Mình dùng đoạn sau để chọn 1 đối tượng là TEXT nếu không chọn được đối tượng hoặc đối tượng không phải là TEXT thì lặp lại đến khi nào được mới thôi.

 

(setq ddd (entsel "\nChon TEXT mau"))

(while

(or

(null ddd)

(/= "TEXT" (cdr (assoc 0 (entget (car ddd)))))

)

(princ "\nDoi tuong khong phai la TEXT! Chon lai")

(setq ddd (entsel "\nChon TEXT mau"))

)

 

Gây giờ mình muốn nó chấp nhận cả MTEXT, DIM nửa thì sửa như thế nào mong các bác chỉ giáo. Thank

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

Lisp như sau:

(setq ddd (entsel "\nChon TEXT mau") s (cdr (assoc 0 (entget (car ddd)))))

(while

(or

(null ddd)

(and (/= "TEXT" s) (/= "MTEXT" s) (/= "DIMENSION" s)

)

)

(setq ddd (entsel "\nChon TEXT mau") s (cdr (assoc 0 (entget (car ddd)))))

)

Tuy nhiên nếu để chọn 1 đối tượng mà không cần lấy điểm pick thì chỉ cần

(setq ddd nil)
(while
(not ddd)
(setq ddd (ssget ":S" '((-4 . ""))))
)

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ó bác nào biết cách để mình load lisp 1 lần cho cad rồi những lần sau vào cad nó tự hiểu ko?Chứ cứ mỗi lúc vào cad lại phải load lisp thấy khổ quá!Hic hic

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ó bác nào biết cách để mình load lisp 1 lần cho cad rồi những lần sau vào cad nó tự hiểu ko?Chứ cứ mỗi lúc vào cad lại phải load lisp thấy khổ quá!Hic hic

 

Lúc bạn load LISP bạn có thể chọn Startup Suite để load tự động cho những lần sau

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ó bác nào biết cách để mình load lisp 1 lần cho cad rồi những lần sau vào cad nó tự hiểu ko?Chứ cứ mỗi lúc vào cad lại phải load lisp thấy khổ quá!Hic hic

bạn dung lệnh ap sau đó chọn contents tiếp đó chọn add - sau đó chọn lisp cần load sẽ được.

sau này sẽ ko cần phải load nữa

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 bác ơi cho em hỏi 1 tí.

1- Em muốn viết lisp để Lock tất cả Layer, em đã viết thử theo suy nghĩ nhưng lisp bị lỗi, mong các bác chỉ giáo.

 

(DEFUN C:LL ( )

(COMMAND "UNDO" "BE")

(SETQ LUUBATDIEM (GETVAR "OSMODE"))

(SETVAR "OSMODE" 0)

(SETQ TAPLAYER (SSGET '((0 . "LAYER"))))

(SETQ I 0)

(SETQ N (SSLENGTH TAPLAYER))

(WHILE (< I N)

(SETQ TENLAYER (SSNAME TAPLAYER I))

(COMMAND "LAYER" "LO" TENLAYER "")

(SETQ I (+ I 1))

)

(SETVAR "OSMODE" LUUBATDIEM)

(COMMAND "UNDO" "END")

(PRINC)

)

 

2- Nếu muốn tác động đến thằng Global Scale factor thì mình dùng biến hệ thống gì hay phải làm như thế nào?

 

http://www.cadviet.com/upfiles/Book1_3.xls

 

Em cảm ơn mấy bác nhiều lắ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
2- Nếu muốn tác động đến thằng Global Scale factor thì mình dùng biến hệ thống gì hay phải làm như thế nào?

 

http://www.cadviet.com/upfiles/Book1_3.xls

 

Em cảm ơn mấy bác nhiều lắm.

Muốn tác động đến thằng Global Scale factor thì mình dùng biến LTSCALE (LTS).

Còn muốn tác động đến thằng Current Object Scale : cái thằng đứng dưới Global Scale factor đó thì dùng biến CELTSCALE

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 bác ơi cho em hỏi 1 tí.

1- Em muốn viết lisp để Lock tất cả Layer, em đã viết thử theo suy nghĩ nhưng lisp bị lỗi, mong các bác chỉ giáo.

 

(DEFUN C:LL ( )

(COMMAND "UNDO" "BE")

(SETQ LUUBATDIEM (GETVAR "OSMODE"))

(SETVAR "OSMODE" 0)

(SETQ TAPLAYER (SSGET '((0 . "LAYER"))))

(SETQ I 0)

(SETQ N (SSLENGTH TAPLAYER))

(WHILE (< I N)

(SETQ TENLAYER (SSNAME TAPLAYER I))

(COMMAND "LAYER" "LO" TENLAYER "")

(SETQ I (+ I 1))

)

(SETVAR "OSMODE" LUUBATDIEM)

(COMMAND "UNDO" "END")

(PRINC)

)

 

2- Nếu muốn tác động đến thằng Global Scale factor thì mình dùng biến hệ thống gì hay phải làm như thế nào?

 

http://www.cadviet.com/upfiles/Book1_3.xls

 

Em cảm ơn mấy bác nhiều lắm.

1. Lisp lock (LL) và unlock (UL) all layer:

;;;-------------------------------------------------------
(defun GetLay(/ Lay Laylist)
(setq Lay (tblnext "LAYER" T) Laylist nil)
(While Lay (setq Laylist (append Laylist (list (cdr (assoc 2 Lay)))) Lay (tblnext "LAYER")))
(acad_strlsort Laylist)
)
;;;-------------------------------------------------------
(defun C:LL() (foreach lay (getlay) (command "layer" "LO" lay "")))
;;;-------------------------------------------------------
(defun C:UL() (foreach lay (getlay) (command "layer" "U" lay "")))
;;;-------------------------------------------------------

 

2. (setvar "LTSCALE" value)

 

Góp ý thêm:

1. Dòng code tô đỏ ở trên là một sai lầm nghiêm trọng!

2. Khi chỉ tác động đến layer, các dòng code về osmode là không cần thiết (vì nó chẳng liên quan gì)

3. Bạn kiếm 1 cuốn sách lisp, cố gắng làm các bài tập cơ bản theo sách, đừng nóng vội!

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ám ơn bạn Tue_NV và bác SSQ nhiều lắm.

Do em cũng mới bắt đầu học thôi nên cũng không hiểu sâu lắm.

Sau này nhờ các bác giúp đỡ thêm.

Ngày mai em sẽ thử nghiệm liền.

Chúc các bác luôn vui vẻ.

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

Nhờ các bác giúp em gán lệnh While vào lisp này với.

 

(defun c:thu()

(setq kieu (getstring "\nNhap kieu cat: "))

(setq dt (car (entsel "\nChon doi tuong: ")))

(setq diem (getpoint "\nChon diem: "))

(setq pt1(list (+ (car diem) 100) (+ (cadr diem) 0) 0))

(setq pt2(list (- (car diem) 100) (+ (cadr diem) 0) 0))

(setq pt3(list (+ (car diem) 0) (+ (cadr diem) 100) 0))

(setq pt4(list (+ (car diem) 0) (- (cadr diem) 100) 0))

(if (= kieu "x")

(progn

(command ".break" dt pt1 pt2)

)

)

(if (= kieu "y")

(progn

(command ".break" dt pt3 pt4)

)

)

)

(princ)

 

Em xin giải thích đôi chút, kiểu cắt X là cắt theo phương X, kiểu cắt Y là cắt theo phương Y. Do đó kiểu cắt X thì chọn đối tượng cũng theo phương X, Y cũng vậy.

Ở đây em muốn dùng hàm While để sau khi lisp break xong 1 đối tượng rồi sẽ quay lại lúc chọn điểm " (setq diem (getpoint "\nChon diem: ")) " để làm việc tiếp.

Và nếu lisp này có điểm nào không hay nhờ các bác chỉnh dùm.

 

Cám ơn các bác nhiều lắ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
Nhờ các bác giúp em gán lệnh While vào lisp này với.

 

(defun c:thu()

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

)

 

Em xin giải thích đôi chút, kiểu cắt X là cắt theo phương X, kiểu cắt Y là cắt theo phương Y. Do đó kiểu cắt X thì chọn đối tượng cũng theo phương X, Y cũng vậy.

Ở đây em muốn dùng hàm While để sau khi lisp break xong 1 đối tượng rồi sẽ quay lại lúc chọn điểm " (setq diem (getpoint "\nChon diem: ")) " để làm việc tiếp.

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

Bạn dùng thử LISP này xem đúng ý bạn không nhé?

(defun c:thu(/ dt pt1 pt2)
 (setq kieu (strcase(getstring "\nNhap kieu cat: ")))
 (while (and (/= kieu "X") (/= kieu "Y"))
   (alert "Chi chap nhan kieu = x,X,y,Y !")
   (setq kieu (strcase(getstring "\nNhap kieu cat: ")))
   )
 (setq osn (getvar "osmode"))

 (while (setq dt (car (entsel "\nChon doi tuong: ")))
   (redraw dt 3)    
   (setvar "osmode" 32);giao diem
   (setq diem (getpoint "\nChon diem: "))
   (if (= kieu "X")
     (setq pt1(list (+ (car diem) 100) (+ (cadr diem) 0) 0)
    pt2(list (- (car diem) 100) (+ (cadr diem) 0) 0))
     )
   (if (= kieu "Y")
     (setq pt1(list (+ (car diem) 0) (+ (cadr diem) 100) 0)
    pt2(list (+ (car diem) 0) (- (cadr diem) 100) 0))
     )    
   (setvar "osmode" 0)
   (command ".break" dt pt1 pt2)
   (redraw dt 4)
   )
 (setvar "osmode" osn)
 (princ)
 )

Chú ý :

1.Sau khi lisp break xong đối tượng rồi, bạn phải chọn lại đối tượng rồi chọn điểm.

 

kiểu cắt X là cắt theo phương X, kiểu cắt Y là cắt theo phương Y. Do đó kiểu cắt X thì chọn đối tượng cũng theo phương X, Y cũng vậy.

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

2.Bạn thử chọn ngược lại, VD: với kiểu cắt là X -> chọn đối tượng theo phương Y -> nhận xét kết quả.

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
Bạn dùng thử LISP này xem đúng ý bạn không nhé?

(defun c:thu(/ dt pt1 pt2)
 (setq kieu (strcase(getstring "\nNhap kieu cat: ")))
 (while (and (/= kieu "X") (/= kieu "Y"))
   (alert "Chi chap nhan kieu = x,X,y,Y !")
   (setq kieu (strcase(getstring "\nNhap kieu cat: ")))
   )
 (setq osn (getvar "osmode"))

 (while (setq dt (car (entsel "\nChon doi tuong: ")))
   (redraw dt 3)    
   (setvar "osmode" 32);giao diem
   (setq diem (getpoint "\nChon diem: "))
   (if (= kieu "X")
     (setq pt1(list (+ (car diem) 100) (+ (cadr diem) 0) 0)
    pt2(list (- (car diem) 100) (+ (cadr diem) 0) 0))
     )
   (if (= kieu "Y")
     (setq pt1(list (+ (car diem) 0) (+ (cadr diem) 100) 0)
    pt2(list (+ (car diem) 0) (- (cadr diem) 100) 0))
     )    
   (setvar "osmode" 0)
   (command ".break" dt pt1 pt2)
   (redraw dt 4)
   )
 (setvar "osmode" osn)
 (princ)
 )

Chú ý :

1.Sau khi lisp break xong đối tượng rồi, bạn phải chọn lại đối tượng rồi chọn điểm.

 

2.Bạn thử chọn ngược lại, VD: với kiểu cắt là X -> chọn đối tượng theo phương Y -> nhận xét kết quả.

 

 

Chào bác Gia bach

Cái lisp này đúng ý của em rồi, cám ơn bác nhiều lắm.

Bác hỏi em câu " Bạn thử chọn ngược lại, VD: với kiểu cắt là X -> chọn đối tượng theo phương Y -> nhận xét kết quả " thì kết quả là lisp chỉ break đối tượng thôi chứ không cắt đi 1 đoạn nào hết. Ý của bác là chỉ muốn break thôi hay bác muốn nói điều gì vậy.

Còn 1 vấn đề này nữa, khi lisp thực hiện vòng While thì chế độ bắt điểm bị mất hết, bác sửa lại dùm em tí với.

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
Chào bác Gia bach

 

Còn 1 vấn đề này nữa, khi lisp thực hiện vòng While thì chế độ bắt điểm bị mất hết, bác sửa lại dùm em tí với.

Tại vì trong vòng lặp While của bạn có dòng lệnh (setvar "osmode" 0) nên nó tắt chế độ bắt điểm đi thôi.

Nếu muốn sửa bạn chỉ cần xách nó bỏ ra ngoài hoặc xách thằng (setvar "osmode" osn) vào trong vòng lặp while sau khi thực hiện lệnh break.

Chúc bạn thành công.

TB: Mà sao đăng ký offline rồi trốn mất tiêu vậy, mình đợi quá trời luô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
.........

Bạn thử chọn ngược lại, VD: với kiểu cắt là X -> chọn đối tượng theo phương Y -> nhận xét kết quả " thì kết quả là lisp chỉ break đối tượng thôi chứ không cắt đi 1 đoạn nào hết.

Chỉ là phát hiện tình cờ khi chạy thử đoạn code trên, không có ý gì cả.

 

....

khi lisp thực hiện vòng While thì chế độ bắt điểm bị mất hết, bác sửa lại dùm em tí với.

Đã sửa lổi chế độ bắt điểm. (chế độ bắt điểm trong vòng lặp hơi bị rắc rối.)

(defun c:thu(/ dt pt1 pt2)
 (Save_Mode)  (Init)
 (setq kieu (strcase(getstring "\nNhap kieu cat: ")))
 (while (and (/= kieu "X") (/= kieu "Y"))
   (alert "Chi chap nhan kieu = x,X,y,Y !")
   (setq kieu (strcase(getstring "\nNhap kieu cat: ")))
   )  
 (while (setq dt (car (entsel "\nChon doi tuong: ")))
   (redraw dt 3)
   (setvar "osmode" 32);giao diem
   (setq diem (getpoint "\nChon diem: "))
   (if (= kieu "X")
     (setq pt1(list (+ (car diem) 100) (+ (cadr diem) 0) 0)
    pt2(list (- (car diem) 100) (+ (cadr diem) 0) 0))
     ;(= kieu "Y")
     (setq pt1(list (+ (car diem) 0) (+ (cadr diem) 100) 0)
    pt2(list (+ (car diem) 0) (- (cadr diem) 100) 0))
     )    
   (setvar "osmode" 0)
   (command ".break" dt pt1 pt2)
   )
 (Done) (Restore) (princ)
 )

(defun Save_Mode ()  
 (setq OSM (getvar "osmode"))
)
;;;--------- Bay loi ------------------
(defun Init ()
 (setq	OldEr *error*
*error*	MyError
 )
)
;;;--------- Xu ly loi ------------------
(defun MyError (errmsg)
 (cond
   ((= errmsg "quit / exit abort")
    (princ)
   )
   ((/= errmsg "Function cancelled")
    (princ (strcat "\n Co loi: " errmsg))
   )
 )
 (Done)
 (if dt (redraw dt 4))
 (Restore)
)

(defun Done ()
 (if OldEr (setq *error* OldEr )  )
)

(defun Restore ()
 (if OSM (setvar "osmode" OSM ) )
)

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

@Phamthanhbinh : Sáng hôm qua có phone cho anh Sơn báo bận vì phải dọn nhà, để đi tăng 2 mà có lẽ tăng 1 kết thúc trễ quá ( hình như là 15h mấy thì phải ) nên ở nhà ngủ quên mất , anh Sơn có phone nhưng không hay. Thôi hẹn dịp sau ha.

@Giabach : thank bác nhiều nha.

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

Nhờ các bác xem dùm em cái lisp kẻ khung cho text này không dùng được khi mình dùng kiểu gõ tiếng Nhật, vậy có cách khắc phục nào không. Các bác xem file đính kèm sẽ thấy mẫu OK nằm ở bên kiểu gõ tiếng Anh.

 

http://www.cadviet.com/upfiles/Drawing1_27.dwg

http://www.cadviet.com/upfiles/new_5.lsp

 

Mong các bác giúp đỡ, cảm ơ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
......

lisp kẻ khung cho text này không dùng được khi mình dùng kiểu gõ tiếng Nhật,

...........

 

Có lẽ ý bạn là : Khi chạy LISP cho Text có font tiếng Nhật thì kết quả cho không như mong muốn.(k/cách là 100,50 ...)

Thực ra kết quả vẫn cho ra đúng, do hàm TextBox trả về giá trị so với đường viền bao quanh TEXT chứ không phải so với điểm chèn (base point) như trong bản vẽ của bạn.

 

Vấn đề điểm chèn do FONT chữ quyết định (được setting trong TextStyle), chứ không phụ thuộc vào kiểu gõ.

Khi thiết kế FONT (không chỉ font tiếng Nhật), họ quyết định điểm chèn (base point) sẽ được đặt ở đâu.

(tương tự như khi tạo Block trong CAD, user cũng phải chỉ ra base point.)

 

Nếu bạn muốn vẽ đường viền theo điểm chèn, bạn cần phải biết rõ về Font chữ mình sử dụng.

Thâ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
Nhờ các bác xem dùm em cái lisp kẻ khung cho text này không dùng được khi mình dùng kiểu gõ tiếng Nhật, vậy có cách khắc phục nào không. Các bác xem file đính kèm sẽ thấy mẫu OK nằm ở bên kiểu gõ tiếng Anh.

 

http://www.cadviet.com/upfiles/Drawing1_27.dwg

http://www.cadviet.com/upfiles/new_5.lsp

 

Mong các bác giúp đỡ, cảm ơn.

Nếu tất cả fonts tiếng Nhật điều bị lệch kích thước như vậy thì các thủ công nhất là chỉnh các số trong lisp để ra kết quả ưng ý.

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ám ơn bác duy và bác gia bach nhiều lắm.

Để khắc phục tình huống này em có ý tưởng sau để làm lisp kẻ khung mới nhưng chưa biết cách lấy tọa độ điểm mà mình muốn, nhờ các bác có thể hướng dẫn phương pháp dùm.

 

http://www.cadviet.com/upfiles/Drawing1_28.dwg

 

Xin cảm ơ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
Cám ơn bác duy và bác gia bach nhiều lắm.

Để khắc phục tình huống này em có ý tưởng sau để làm lisp kẻ khung mới nhưng chưa biết cách lấy tọa độ điểm mà mình muốn, nhờ các bác có thể hướng dẫn phương pháp dùm.

 

http://www.cadviet.com/upfiles/Drawing1_28.dwg

 

Xin cảm ơn.

Hình như bạn chưa hiểu bài viết của giabach thì phải.

Cái bạn muốn làm mình không hiểu cách tư duy của bạn.

Chỉ cần sửa dòng này là xong mà!

(command "rectangle" (list (- (car ul) 100) (+ (cadr ul) 50)) (list (+ (car lr) 100) (- (cadr lr) 50)))

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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×