Đế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
2851 replies to this topic

#381 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 22 June 2009 - 09:36 AM

Cám ơn bác q288 đã hướng dẫn. Nhờ bác trả lời vế sau của e luôn được chứ?
E đã thử lấy giá trị của hàm (entget doituong) để thử tạo ra 1 đổi tượng mới nhưng ko thành công.
Cụ thể như sau: lấy "entget" của đường Pline (4 điểm) được:
......................
Từ đây e thử tạo tại Pline này bằng lệnh entmake nhưng ko được.Bác q288 xem ý tưởng vậy có gì sai?

Chào VoHoan
hàm tạo Pline hở từ danh sách điểm :
(defun makePLINE(lst-pt)
(entmakex
(apply
(function append)
(cons
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(62 . 3) ; color
(cons 90 (length lst-pt))
'(70 . 0)
)
(mapcar
(function list)
(mapcar (function (lambda (a) (cons 10 a))) lst-pt)
) ;_ mapcar
) ;_ cons
) ;_ apply
)
)

Minh họa việc "copy" 1 PLINE (chỉ lấy danh sách điểm, bỏ qua chiều rộng và cung tròn nếu có)
(defun c:test(/ en lst-pt sp delta)
(defun makePLINE(lst-pt)
(entmakex
(apply
(function append)
(cons
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(62 . 3) ; color
(cons 90 (length lst-pt))
'(70 . 0)
)
(mapcar
(function list)
(mapcar (function (lambda (a) (cons 10 a))) lst-pt)
) ;_ mapcar
) ;_ cons
) ;_ apply
)
)
(if (and (setq en (car (entsel)))
(= (cdr (assoc 0 (entget en))) "LWPOLYLINE")
)
(progn
(setq lst-pt (mapcar (function cdr)
(vl-remove-if-not (function (lambda (a) (= (car a) 10))) (entget en))
)
sp (vlax-curve-getStartPoint en)
delta (mapcar '- sp (getpoint sp "\nDiem dat :"))
delta (list (car delta) (cadr delta))
lst-pt (mapcar (function (lambda (a) (mapcar '- a delta))) lst-pt)
)
(makePLINE lst-pt)
)
)
)

  • 1

#382 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 25 June 2009 - 08:40 PM

Xin chào mọi người
Tue_NV có một vấn đề khúc mắc mà chưa giải quyết được.
Vấn đề đó như sau :
Mình có list L như sau :

Command: (setq L (append (list '(a d)) (list '(c d)) (list '(e f)) (list '(f g)) (list '(h k))))
((A D) (C D) (E F) (F G) (H K))

Vấn đề mà Tue_NV muốn hỏi ở đây là từ list L đã thiết lập đó
=> Làm sao để tạo một list LI như sau :
((C D) (E F) (F G))

Ví dụ : như hàm append để nối list con thành 1 list mẹ
Còn sử dụng hàm gì để tách 1 list con ra khỏi List mẹ đó mà

Tue_NV chưa biết cách làm. Xin mọi người chỉ giúp
Cảm ơn thật nhiều
  • 0

#383 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 25 June 2009 - 08:58 PM

Xin chào mọi người
Tue_NV có một vấn đề khúc mắc mà chưa giải quyết được.
Vấn đề đó như sau :
Mình có list L như sau :

Command: (setq L (append (list '(a d)) (list '(c d)) (list '(e f)) (list '(f g)) (list '(h k))))
((A D) (C D) (E F) (F G) (H K))

Vấn đề mà Tue_NV muốn hỏi ở đây là từ list L đã thiết lập đó
=> Làm sao để tạo một list LI như sau :
((C D) (E F) (F G))

Ví dụ : như hàm append để nối list con thành 1 list mẹ
Còn sử dụng hàm gì để tách 1 list con ra khỏi List mẹ đó mà

Tue_NV chưa biết cách làm. Xin mọi người chỉ giúp
Cảm ơn thật nhiều


Cái đó ko có hàm sẵn đâu bạn, bạn phải tự làm thôi.
Mình đề nghị hai cái hàm này:

Cái này lấy list con từ phần tử a tới ptử b cua L:
(defun sublist(a b L)
(reverse (member b (reverse (member a L))))
)

Cái này lấy list con từ phần tử thứ n tới ptử thứ m của L (ptử đầu là 0):
(defun subNlist(n m L)
(reverse (member (nth m L) (reverse (member (nth n L) L))))
)

Test:
(setq L (append (list '(a d)) (list '(c d)) (list '(e f)) (list '(f g)) (list '(h k))))
(sublist '(c d) '(f g) L)
(subNlist 1 3 L)
  • 1

#384 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 25 June 2009 - 09:23 PM

Cái đó ko có hàm sẵn đâu bạn, bạn phải tự làm thôi.
Mình đề nghị hai cái hàm này:

Cái này lấy list con từ phần tử a tới ptử b cua L:
(defun sublist(a b L)
(reverse (member b (reverse (member a L))))
)

Cái này lấy list con từ phần tử thứ n tới ptử thứ m của L (ptử đầu là 0):
(defun subNlist(n m L)
(reverse (member (nth m L) (reverse (member (nth n L) L))))
)

Test:
(setq L (append (list '(a d)) (list '(c d)) (list '(e f)) (list '(f g)) (list '(h k))))
(sublist '(c d) '(f g) L)
(subNlist 1 3 L)

Cảm ơn q288. Tue_NV đã hiểu rồi. Bạn cho mình hỏi thêm chút nữa là ví dụ tách một List con nó không đi theo thứ tự từ phần tử a tới phần tử b của List mẹ L
Ví dụ trên :
từ list L đã thiết lập đó
Command: (setq L (append (list '(a d)) (list '(c d)) (list '(e f)) (list '(f g)) (list '(h k))(list '(m n))))
((A D) (C D) (E F) (F G) (H K) (M N)
=> Làm sao để tạo một list LI như sau :
((C D) (F G) (M N))
Trường hợp này, thiệt tình mình nghĩ chưa ra. Mong bạn q288 và mọi người bỏ chút thời gian giúp Tue_NV
Xin cảm ơn thật nhiều
  • 0

#385 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 25 June 2009 - 09:35 PM

Cảm ơn q288. Tue_NV đã hiểu rồi. Bạn cho mình hỏi thêm chút nữa là ví dụ tách một List con nó không đi theo thứ tự từ phần tử a tới phần tử b của List mẹ L
Ví dụ trên :
từ list L đã thiết lập đó
Command: (setq L (append (list '(a d)) (list '(c d)) (list '(e f)) (list '(f g)) (list '(h k))(list '(m n))))
((A D) (C D) (E F) (F G) (H K) (M N)
=> Làm sao để tạo một list LI như sau :
((C D) (F G) (M N))
Trường hợp này, thiệt tình mình nghĩ chưa ra. Mong bạn q288 và mọi người bỏ chút thời gian giúp Tue_NV
Xin cảm ơn thật nhiều


Nếu lấy không theo thứ tự nào như vậy thì chỉ có cách dùng assoc:
(list (assoc 'c L) (assoc 'f L) (assoc 'm L))
bạn xem như vậy có đc ko?
  • 0

#386 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 25 June 2009 - 09:50 PM

Nếu lấy không theo thứ tự nào như vậy thì chỉ có cách dùng assoc:
(list (assoc 'c L) (assoc 'f L) (assoc 'm L))
bạn xem như vậy có đc ko?

Rất cảm ơn bạn q288 đã nhiệt tình giúp đỡ. Tue_NV cảm ơn bạn rất nhiều
Mình cũng đã nghĩ tới việc dùng hàm assoc và hàm List để tạo một List con từ một List mẹ
Tuy nhiên sử dụng cách này hơi lâu.
Với List mẹ có số phần tử tương đối ít. -> thì việc dùng hàm assoc và hàm List để tạo một List con từ một List mẹ : ta có thể sử dụng
Nhưng với List mẹ chứa số phần tử lớn mà mình chỉ muốn khai trừ một ít phần tử trong list mẹ thì việc này rất lâu và tốn nhiều thời gian.

Mình chưa nghĩ được phương án tối ưu.
Mong mọi người giúp đỡ.
Cảm ơn bạn q288 thật nhiều
  • 0

#387 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 25 June 2009 - 10:46 PM

Rất cảm ơn bạn q288 đã nhiệt tình giúp đỡ. Tue_NV cảm ơn bạn rất nhiều
Mình cũng đã nghĩ tới việc dùng hàm assoc và hàm List để tạo một List con từ một List mẹ
Tuy nhiên sử dụng cách này hơi lâu.
Với List mẹ có số phần tử tương đối ít. -> thì việc dùng hàm assoc và hàm List để tạo một List con từ một List mẹ : ta có thể sử dụng
Nhưng với List mẹ chứa số phần tử lớn mà mình chỉ muốn khai trừ một ít phần tử trong list mẹ thì việc này rất lâu và tốn nhiều thời gian.

Mình chưa nghĩ được phương án tối ưu.
Mong mọi người giúp đỡ.
Cảm ơn bạn q288 thật nhiều


Vậy bạn thử dùng các hàm vl-remove hay vl-remove-if xem sao
  • 0

#388 VoHoan

VoHoan

    biết lệnh move

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

Đã gửi 25 June 2009 - 11:24 PM

Cả tuần nay bân việc quá không có thời gian ghé thăm CadViet.Hôm nay vào thấy câu hỏi em đặt ra đã có nhiều người giúp mà chưa kịp cám ơn, giờ tiện đây cám ơn toàn thể mọi người đã giúp đỡ.
  • 0

#389 TRUNGNGAMY

TRUNGNGAMY

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 401 Bài viết
Điểm đánh giá: 91 (tàm tạm)

Đã gửi 26 June 2009 - 01:38 AM

Bạn dùng entmake thì vất vả đấy, vì phải hiểu rõ các code của nó mới làm đc.
Bạn viết lại như sau:

(entmake '((0 . "LWPOLYLINE") (100 . "AcDbEntity") (100 . "AcDbPolyline")
(90 . 4) (70 . 0)
(10 233.688 -392.403)
(42 . 0) (10 258.958 -374.806)
(42 . 0) (10 269.721 -385.148)
(42 . 0) (10 285.425 -375.227)
))

Mình nhớ là code 100 không có cũng đc, nhưng tại bạn vẫn dùng (100 . "AcDbEntity") (100 . "AcDbPolyline").
Thật ra có ý nghĩa gì vậy bạn q288.
Mình thấy trong cad có nhiều loại POLYLINE. Lúc thì POLYLINE, lúc thì LWPOLYLINE, có lúc lại phân biệt 2D và 3D. Bạn có thể phân tích sự khác nhau và cách tạo POLYLINE, LWPOLYLINE 2D, POLYLINE 3D bằng Lisp cho mình hiểu đc 0? Cám ơn bạn
  • 0

#390 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 26 June 2009 - 07:28 AM

Rất cảm ơn bạn q288 đã nhiệt tình giúp đỡ. Tue_NV cảm ơn bạn rất nhiều
Mình cũng đã nghĩ tới việc dùng hàm assoc và hàm List để tạo một List con từ một List mẹ
.............................

Chào Tue_NV
Gửi bạn 1 số hàm Remove phần tử trong danh sách.
;;; Some list manipulation tools
;;;
;;; (vl-remove-last list): input list, removes last element from list
;;; (remove atom list): similar to (vl-remove) but only removes first occurance of atom in list
;;; (nth-remove nth list): removes nth element from list
;;; (remlist start length list): removes a number of elements after start position from a list

(defun vl-remove-last (f_l) ;removes last element from a list
(setq f_l (reverse (cdr (reverse f_l))))
)
;eg (setq a (vl-remove-last '(1 2 3))) = (1 2)

(defun remove (f_new f_newlist / f_test) ;removes first occurance of an element from a list
(if (member f_new f_newlist) ;is value present in list
(progn
(setq f_test nil) ;test to see if element removed
(repeat (length f_newlist) ;loop through list
(progn
(if (not (and (= f_test nil) (= (car f_newlist) f_new)))
;test if element removed or element is to be removed
(setq f_newlist
(cdr (append f_newlist (list (car f_newlist))))
) ;swaps moves first element to end of list
(progn
(setq f_test t) ;element has been removed
(setq f_newlist (cdr f_newlist))
;remove first element from list
)
)
)
)
)
)
)
;eg (remove 1 '(1 1 2 1)) = (1 2 1)

(defun nth-remove (f_n f_list / ) ;removes nth element from a list
(if (and (numberp f_n) (listp f_list))
(if (and (>= f_n 0) (< f_n (length f_list)))
(progn
(repeat f_n
(setq f_list (append (cdr f_list) (list (car f_list))))
)
(setq f_list (cdr f_list))
(repeat (- (length f_list) f_n)
(setq f_list (append (cdr f_list) (list (car f_list))))
)
)
)
)
f_list
)
;eg (nth-remove (0 '(1 2 3))) = (2 3)

(defun remlist (f_n f_m f_newlist / f_loop f_x) ;removes number of elemts from list
(if (>= (length f_newlist) f_n) ;test range
(progn
(setq f_loop -1) ;initialize counter
(setq f_m (+ f_n (- f_m 1))) ;set end element
(foreach f_x f_newlist ;loop through list
(progn
(setq f_loop (1+ f_loop)) ;increment counter
(if (and (<= f_n f_loop) (>= f_m f_loop)) ;check within range
(setq f_newlist (cdr f_newlist))
;remove first element from list
(setq f_newlist (cdr (append f_newlist (list f_x))))
;move first element to end of list
)
)
)
)
)
)
;eg (remlist 1 2 '(1 2 3 4 5)) = (1 4 5)

  • 0

#391 q288

q288

    biết lệnh fillet

  • Members
  • PipPipPipPip
  • 209 Bài viết
Điểm đánh giá: 164 (tàm tạm)

Đã gửi 26 June 2009 - 07:59 AM

Mình nhớ là code 100 không có cũng đc, nhưng tại bạn vẫn dùng (100 . "AcDbEntity") (100 . "AcDbPolyline").
Thật ra có ý nghĩa gì vậy bạn q288.
Mình thấy trong cad có nhiều loại POLYLINE. Lúc thì POLYLINE, lúc thì LWPOLYLINE, có lúc lại phân biệt 2D và 3D. Bạn có thể phân tích sự khác nhau và cách tạo POLYLINE, LWPOLYLINE 2D, POLYLINE 3D bằng Lisp cho mình hiểu đc 0? Cám ơn bạn


mình đã thử bỏ code 100 nhưng ko tạo đc polyline.

polyline là dùng cho cad cũ (R14 chẳng hạn) có thể gọi là polyline 2d.
Còn lwpolyline (lineweight Polyline) có 2 loại 2d và 3d.
2d thì các đỉnh có cùng elevation như nhau (cùng cao độ)
3d thì mỗi đỉnh có thể có elevation khác nhau.

Có thể dùng lệnh convert để chuyển polyline sang lwpolyline .
Hoặc dùng biến PLINETYPE để định pline tạo ra thuộc loại nào.
PLINETYPE=0 (POLYLINE)
PLINETYPE=1 hay 2 (LWPOLYLINE)
  • 2

#392 tuanthanhbp

tuanthanhbp

    biết pan

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

Đã gửi 11 July 2009 - 10:50 PM

Có ai biết cách tùy biến Menu của Autocad 2007 không xin chỉ với. Tôi muốn sửa (thêm hoặc bớt chức năng) flie ACAD.cui nhưng không biết phải làm sao.
  • 0

#393 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 20 July 2009 - 02:49 PM

Nhờ mọi người chỉ giúp cách ghép 1 lệnh vào 1 lệnh khác. Ví dụ Lísp1 dùng để chuyển tẽxt sang màu đỏ. Lísp 2 dùng tạo tẽxt, sau đó kết hợp Lísp 1 để chuyển sang màu đỏ luôn. 2 ví dụ dưới mục đích để tìm hiểu cách sử dụng 1 lệnh trong 1 lệnh khác.

Lísp1 :
(defun c:chuyen ( / ent )
(setq dt (car(entsel)))
(command "chprop" dt "" "c" 1 "" "")
)

Lísp2 :
(defun c:taotext ( / ent )
(setq diemtext (getpoint))
(command ".style" "original" "extfont2.shx" "0" "0.8" "0" "n" "n" "n")
(command "text" "bc" diemtext 200 0 "abc")
(setq chu (entlast))
(chuyen chu)
)
  • 0

#394 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 July 2009 - 03:05 PM

Nhờ mọi người chỉ giúp cách ghép 1 lệnh vào 1 lệnh khác. Ví dụ Lísp1 dùng để chuyển tẽxt sang màu đỏ. Lísp 2 dùng tạo tẽxt, sau đó kết hợp Lísp 1 để chuyển sang màu đỏ luôn. 2 ví dụ dưới mục đích để tìm hiểu cách sử dụng 1 lệnh trong 1 lệnh khác.

Lísp1 :
(defun c:chuyen ( / ent )
(setq dt (car(entsel)))
(command "chprop" dt "" "c" 1 "" "")
)

Lísp2 :
(defun c:taotext ( / ent )
(setq diemtext (getpoint))
(command ".style" "original" "extfont2.shx" "0" "0.8" "0" "n" "n" "n")
(command "text" "bc" diemtext 200 0 "abc")
(setq chu (entlast))
(chuyen chu)
)

Chào bạn Tuan_thiêtkedien,
Để có thể chạy môt lisp trong một lisp khác như bạn mô tả, bạn chỉ cần đặt đoạn lisp thứ nhất vào trong một function con (trong ví dụ của bạn, hãy thay dòng (defun C:chuyen (/ent) bằng dòng (defun chuyenchu (/ent) Chú ý là tên function viet liền không có khoảng trắng). Sau đó trong lisp thứ hai bạn nhập tên function vào chỗ bạn muốn là xong. Khi chạy lisp đến dòng này thì lisp sẽ tự động chạy function con đó giùm bạn.
Bạn lưu ý cái dòng chữ đỏ của bạn chưa phải tên function đâu nhé, tên function trong lisp không cho dùng khoảng trắng đâu bạn ạ.
Chúc bạn thành công.
  • 1
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#395 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 20 July 2009 - 08:12 PM

Nhờ mọi người chỉ giúp cách ghép 1 lệnh vào 1 lệnh khác. Ví dụ Lísp1 dùng để chuyển tẽxt sang màu đỏ. Lísp 2 dùng tạo tẽxt, sau đó kết hợp Lísp 1 để chuyển sang màu đỏ luôn. 2 ví dụ dưới mục đích để tìm hiểu cách sử dụng 1 lệnh trong 1 lệnh khác.

Lísp1 :
(defun c:chuyen ( / ent )
(setq dt (car(entsel)))
(command "chprop" dt "" "c" 1 "" "")
)

Lísp2 :
(defun c:taotext ( / ent )
(setq diemtext (getpoint))
(command ".style" "original" "extfont2.shx" "0" "0.8" "0" "n" "n" "n")
(command "text" "bc" diemtext 200 0 "abc")
(setq chu (entlast))
(chuyen chu)
)

Chào bạn Tuanthietkedien
Code trên sẽ được Tue_NV viết lại như sau :
(defun c:taotext ( / ent )
(setq diemtext (getpoint))
(command ".style" "original" "extfont2.shx" "0" "0.8" "0" "n" "n" "n")
(command "text" "bc" diemtext 200 0 "abc")
(setq chu (entlast))
(chuyen chu)
)
;
(defun chuyen (dt / ent )
(command "chprop" dt "" "c" 1 "" "")
)

@PhamthanhBinh : Theo Tue_NV hiểu là bạn Tuan định nghĩa hàm chuyen với tham biến là chu đấy
Vậy Cú pháp khi gọi chương trình con là (chuyen chu) và lúc này (chuyen chu) là 1 function phải không bạn?
  • 2

#396 quygtvt

quygtvt

    biết vẽ circle

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

Đã gửi 20 July 2009 - 11:23 PM

Có ai biết cách tùy biến Menu của Autocad 2007 không xin chỉ với. Tôi muốn sửa (thêm hoặc bớt chức năng) flie ACAD.cui nhưng không biết phải làm sao.

ACad.CUI là file dịch rồi, không tuỳ biến được. Muốn thêm bớt sửa đổi bạn phải tìm file *.mns.
  • 0
Không thể nói trời không xanh hơn,
và mắt em không xanh khác ngày thường

Hình đã gửi


#397 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 22 July 2009 - 10:13 AM

Chào bạn Tuanthietkedien
Code trên sẽ được Tue_NV viết lại như sau :

(defun c:taotext ( / ent )
(setq diemtext (getpoint))
(command ".style" "original" "extfont2.shx" "0" "0.8" "0" "n" "n" "n")
(command "text" "bc" diemtext 200 0 "abc")
(setq chu (entlast))
(chuyen chu)
)
;
(defun chuyen (dt / ent )
(command "chprop" dt "" "c" 1 "" "")
)

@PhamthanhBinh : Theo Tue_NV hiểu là bạn Tuan định nghĩa hàm chuyen với tham biến là chu đấy
Vậy Cú pháp khi gọi chương trình con là (chuyen chu) và lúc này (chuyen chu) là 1 function phải không bạn?


Chào bạn Tue_NV, bạn Phamthanhbinh
Mình thấy các bác hay dùng kiểu (function biến) để ghép vào 1 lệnh khác mà mình chưa hiểu rõ cách dùng thế nào nên muốn học.
Ý của mình là bất kỳ các lisp nào mà mình muốn chuyển màu chữ thì mình không cần dùng lại lệnh CHPROP nữa mà chỉ cần gọi hàm chuyen mà thôi.
Cho mình hỏi là
1. Nếu chỉ muốn chuyển màu chữ thì làm sao gọi hàm chuyển được?
2. Có phải hàm (defun chuyen (dt / ent ) (command "chprop" dt "" "c" 1 "" "") , chỉ cần khai báo 1 lần là có thể ghép vào tất cả các hàm khác không , hay phải khai báo lại?
  • 0

#398 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 22 July 2009 - 10:17 AM

2. Có phải hàm (defun chuyen (dt / ent ) (command "chprop" dt "" "c" 1 "" "") , chỉ cần khai báo 1 lần là có thể ghép vào tất cả các hàm khác không , hay phải khai báo lại?

Đúng rồi.
Bạn hãy thử đi sẽ rút ra câu trả lời cho mình
  • 0

#399 Minh_Ha

Minh_Ha

    biết zoom

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

Đã gửi 14 August 2009 - 04:55 PM

-Cho mình hỏi. Trong lisp ham nào lấy được tọa độ điểm của hình chữ nhật trong block. VD: mình có khung bản vẽ là 1 block hình chữ nhật, khi chọn block thì lấy được điểm 1 và điểm 2 của đường chéo hình chữ nhật. Xin chỉ dùm cám ơn.
  • 0

#400 tomboy

tomboy

    biết vẽ polygon

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

Đã gửi 14 August 2009 - 11:50 PM

-Cho mình hỏi. Trong lisp ham nào lấy được tọa độ điểm của hình chữ nhật trong block. VD: mình có khung bản vẽ là 1 block hình chữ nhật, khi chọn block thì lấy được điểm 1 và điểm 2 của đường chéo hình chữ nhật. Xin chỉ dùm cám ơn.

Nếu đối tượng chọn là 1 block thì phức tạp lắm tại vì nó là 1 đối tượng đa thực thể nên để thâm nhập vào được 1 đối tượng nào trong block thì người dùng cần phải có block đó thì mới có thể thâm nhập được, do đó bạn có thể upload bản vẽ chứa block đó lên được không để mình cùng tham khảo.
  • 0