Đế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

#1301 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 09 September 2012 - 09:14 AM

à đúng rồi, tại em cứ gõ như tiếng việt nên sau dấu : là phải cách cho nên mới sai. nhưng mà em dùng lệnh
Command: ai_editcustfile
Custom File to edit:
File could not be found.
nó vẫn chạy mà sao dùng:
Command: tue
nil (vẫn báo mà không hiện gì cả)

Lisp báo nil mà không hiện gì cả chứng tỏ là file Tue_NV.xls không nằm trong ổ C:\\
  • 1

#1302 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 10 September 2012 - 03:54 PM

Làm sao để xác định góc nghiêng đường ghi kích thước của DIM?
Mình dùng code để chọn các dim Aligned (dim đứng, ngang xiên)

(ssget (list(cons 0 "DIMENSION")(cons -4 "<OR")(cons 70 32)(cons 70 33)(cons 70 64)(cons 70 65)(cons 70 128)(cons 70 129)(cons -4 "OR>"))

- Do chúng ta sẽ nhận được các bản vẽ từ nhiều nguồn khác nhau. Chằng may đường Dim (một hoặc nhiều Dim) nào đó có dxf14 trùng với dxf10 thì làm sao xác định được góc nghiêng đường ghi kích thước?
- nếu dùng (entget(car(nentsel))) cho DIM thì sẽ tính được góc nghiêng này qua dxf10 dxf11. Trong trường hợp này có cách nào để dùng nentsel cho các đối tượng trong tập chọn ssget không?

Ai biết xin chỉ giúp. Thanks
  • 0

#1303 hoangkimoanh

hoangkimoanh

    biết vẽ spline

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

Đã gửi 10 September 2012 - 05:38 PM

Lisp báo nil mà không hiện gì cả chứng tỏ là file Tue_NV.xls không nằm trong ổ C:\\

à tại em để trong thư viện của CAD trong ổ C mà em lại không sửa đường dẫn file. cảm ơn anh, em đã làm được rồi.
  • 0

#1304 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 10 September 2012 - 07:34 PM

Góc nghiêng (tính bằng radian) của đường dim thứ i trong tập chọn ss:
(angle (cdr (assoc 11 (entget (ssname ss i)))) (cdr (assoc 10 (entget (ssname ss i)))))
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1305 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 10 September 2012 - 10:54 PM

tính theo dxf11 không chuẩn đâu, vì nó có loại Centered, above, outside, jis
  • 1

#1306 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 11 September 2012 - 09:15 AM

Dimaligned bạn lấy góc nghiêng qua dxf13 14, nó có trùng hay không cũng đâu có vấn đề gì ?
  • 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


#1307 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 11 September 2012 - 09:56 AM

Dimaligned bạn lấy góc nghiêng qua dxf13 14, nó có trùng hay không cũng đâu có vấn đề gì ?

Nếu dxf13 dxf14 đã bị sửa thì tính góc nghiêng này không đúng

Bình thường thì xét theo góc nghiêng của dxf14 dxf10, nhưng dxf13 và dxf14 có thể thay đổi không đều so với đường ghi kích thước (do người dùng tác động,...Mình đã gặp bản vẽ dim có đường gióng 2 bên không bằng nhau)
Nếu dxf14 trùng với dxf10 thì cách trên không xác định được góc nghiêng. Do đường ghi kích thước luôn luôn có (trừ khi nó bằng 0) nên mình muốn xét góc nghiêng qua đường ghi kích thước là tổng quát hơn
Như trên mình đã nêu: nếu dùng (entget(car(nentsel))) cho DIM thì sẽ tính được góc nghiêng này qua dxf10 dxf11. Trong trường hợp này có cách nào để dùng nentsel cho các đối tượng trong tập chọn ssget không?. Hoặc có thể tính góc nghiêng thông qua các Entity names cảu DIM trong tập chọn ssget?
  • 0

#1308 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 11 September 2012 - 10:23 AM

Cách làm với từng đối tượng trong tập chọn bác Hà đã nói bên trê rồi đó thôi.
  • 0

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


#1309 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 11 September 2012 - 10:31 AM

Cách làm với từng đối tượng trong tập chọn bác Hà đã nói bên trê rồi đó thôi.


Mình cũng đã trả lời rồi Bạn, dxf11 thường không nằm trên đường ghi kich thước nên tính ra góc nghiêng sẽ không đúng
  • 0

#1310 matusalem

matusalem

    biết zoom

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

Đã gửi 11 September 2012 - 10:43 AM

E có 2 Lisp, Giờ em muốn ghép lại thành 1 lisp .Mong được các anh giúp đỡ http://www.cadviet.c...oi_de_hoi_1.rar

Bài viết đã được chỉnh sửa nội dung bởi matusalem: 11 September 2012 - 10:48 AM

  • 0

#1311 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 11 September 2012 - 10:55 AM

E có 2 Lisp, Giờ em muốn ghép lại thành 1 lisp .Mong được các anh giúp đỡ http://www.cadviet.c...oi_de_hoi_1.rar

Copy file này paste vào file kia bình thường thôi.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1312 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 11 September 2012 - 10:56 AM

Mình cũng đã trả lời rồi Bạn, dxf11 thường không nằm trên đường ghi kich thước nên tính ra góc nghiêng sẽ không đúng

Bạn test cái này xem sao:

(defun C:HA( / ss i pd pc goc lstgoc)
(setq ss (ssget '((0 . "DIMENSION"))))
(setq i (- (sslength ss) 1))
(repeat (sslength ss)
(setq pd (cdr (assoc 10 (entget (entnext (entnext (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 (entget (ssname ss i) (list "*")))))))))))))
(setq pc (cdr (assoc 10 (entget (entnext (entnext (entnext (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 (entget (ssname ss i) (list "*"))))))))))))))
(cond
((or (= (getvar "dimtad") 0) (= (getvar "dimtad") 1))
(setq goc (angle pd pc)))
(T (setq goc (- (angle pd pc) (/ pi 2)))))
(setq lstgoc (cons goc lstgoc))
(setq i (1- i)))
lstgoc)

  • 1

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1313 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 11 September 2012 - 11:07 AM

Làm sao để xác định góc nghiêng đường ghi kích thước của DIM?
Mình dùng code để chọn các dim Aligned (dim đứng, ngang xiên)
...................



Dimaligned bạn lấy góc nghiêng qua dxf13 14, nó có trùng hay không cũng đâu có vấn đề gì ?



Nếu dxf13 dxf14 đã bị sửa thì tính góc nghiêng này không đúng
...

Nếu dxf13 dxf14 đã bị sửa -> đường dim trở thành Rotate dimension -> lấy dxf 50.
(ssget '((0 . "DIMENSION") (-4 . "<OR")(70 . 0)(70 . 32)(70 . 160) (-4 . "OR>") ))
  • 1

#1314 tien2005

tien2005

    biết lệnh properties

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

Đã gửi 11 September 2012 - 01:03 PM

@Doan Van Ha: Thanhks, đã giải quyết được vấn đề, không nghĩ rằng nó nằm trong block của dim
@gia_bach: theo dxf50 cũng không ổn, các dim nghiêng đều có dxf 50 = 0
  • 0

#1315 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 11 September 2012 - 02:04 PM

@Doan Van Ha: Thanhks, đã giải quyết được vấn đề, không nghĩ rằng nó nằm trong block của dim
@gia_bach: theo dxf50 cũng không ổn, các dim nghiêng đều có dxf 50 = 0

Bạn hiểu sai ý tôi rồi !

Với các dim nghiêng AlignedDimension dùng cách của Ketxu : dxf13-14.
tôi chỉ viết là : với các Rotate dimension -> lấy dxf 50
dòng (ssget '((0 . "DIMENSION") (-4 . "<OR")(70 . 0)(70 . 32)(70 . 160) (-4 . "OR>") )) làm sao chọn được dim nghiêng có dxf50=0 ?
  • 0

#1316 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 11 September 2012 - 11:48 PM

Bác nào biết thì chỉ giùm với: dùng lisp làm sao để chọn được 1 list các folder?
Ghi chú: chọn trực tiếp folder chứ không thông qua việc chọn file để lấy tên folder.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1317 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 12 September 2012 - 06:42 AM

Bác nào biết thì chỉ giùm với: dùng lisp làm sao để chọn được 1 list các folder?
Ghi chú: chọn trực tiếp folder chứ không thông qua việc chọn file để lấy tên folder.

(acet-ui-pickdir) nếu bác dùng Express
(dos_getdir) nếu dùng Dos_lib
hoặc bác tìm cách sử dụng browse for folder từ VBA rồi chuyển qua VL. như ví dụ của LM ở Link
  • 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


#1318 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 5448 Bài viết
Điểm đánh giá: 2624 (tuyệt vời)

Đã gửi 12 September 2012 - 08:40 AM

Hình như không thể tick để chọn nhiều folder từ dialoge_folder mà mỗi lần chỉ chọn được 1 folder thôi Ket à?
Bác đang muốn khi dialoge_folder hiện ra thì có thể tick để chọn được cùng lúc nhiều folder, sau đó trả về list các folder được chọn.
  • 0

* Chỉ nên yêu cầu Lisp khi bạn làm việc đó mất cả ngày nhưng họ chỉ viết 1 giờ. Đừng nêu yêu cầu Lisp khi bạn chỉ làm 1 giờ nhưng bắt họ phải mất cả ngày.

* Nhờ viết lisp cũng như đi khám bệnh. Chỉ gởi căn cước và than sắp chết thì không bác sỹ nào cứu sống được.


#1319 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 12 September 2012 - 01:18 PM

Vậy thì bác đành phải viết 1 DCL giả lập Browse, đối số là thư mục gốc (nếu nil thì đặt bằng C:\), dùng action cho list_box với reason kích đúp là liệt kê toàn bộ Folder bên trong (vl-directory-files với đối số Dir = -1), list box có Multi_select = true
(cháu chưa test nhưng nghĩ là sẽ làm được ^^)
  • 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


#1320 matusalem

matusalem

    biết zoom

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

Đã gửi 12 September 2012 - 01:32 PM

Copy file này paste vào file kia bình thường thôi.

A cho e hoi là 2 lisp của em: mỗi lisp đều có một lệnh, giờ e làm như A thì Lisp gọp lại không hiểu được lệnh!
Mong được sự giúp đỡ
  • 0