Đến nội dung


Hình ảnh
- - - - -

[Yêu cầu] Lisp tạo Lớp có lineweight?


  • Please log in to reply
8 replies to this topic

#1 quangthanhdu

quangthanhdu

    biết vẽ rectang

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

Đã gửi 23 November 2012 - 10:39 AM

Hình đã gửi

Để tạo một lớp mới có tên 10, màu đỏ và mục lineweight là 0.35 (NHƯ TRONG HÌNH) thì câu lênh như thế nào? (Lineweight thể hiện như trong hình chứ không phải là Lineweight trong Bảng "Layer properties Manager khi ta gõ lệnh LA trong Command, giá trị trong bảng vẫn để là Default".Mong ý kiến của mọi người!!!
  • 0

#2 avi612

avi612

    biết lệnh move

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

Đã gửi 23 November 2012 - 10:54 AM

Dùng 1 câu command đơn giản thôi bạn:
Code dưới đây có chức năng là thay đổi lineweight có sẵn (layer 10 đã có) về chiều dày 0.35.
  (command ".layer" "LW" "0.35" "10" "")

  • 0

#3 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 23 November 2012 - 11:00 AM


(defun C:TAOLOP()
(command "lweight" 0.35)
(command "layer" "m" "10" "c" 1 "" ""))

  • 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.


#4 quangthanhdu

quangthanhdu

    biết vẽ rectang

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

Đã gửi 23 November 2012 - 11:04 AM

Dùng 1 câu command đơn giản thôi bạn:
Code dưới đây có chức năng là thay đổi lineweight có sẵn (layer 10 đã có) về chiều dày 0.35.

  (command ".layer" "LW" "0.35" "10" "")

Câu lênh này chỉ đổi Lineweight trong Bảng "Layer properties Manager" chứ không thể hiện giống như trong hình, em muốn khi gõ lệnh "TAOLOP", thì sẽ có 1 layer có tên 10, và có lineweight 0.35 như trong hình.
  • 0

#5 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 23 November 2012 - 11:09 AM

Ở #3
  • 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.


#6 quangthanhdu

quangthanhdu

    biết vẽ rectang

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

Đã gửi 23 November 2012 - 12:08 PM

 (defun C:TAOLOP() (command "lweight" 0.35) (command "layer" "m" "10" "c" 1 "" "")) 

Như thế này là ok rồi.... Cảm ơn Các Anh.
  • 0

#7 Polyline

Polyline

    biết lệnh mirror

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

Đã gửi 21 August 2013 - 04:06 PM

Nhân tiện các bác cho mình hỏi: Bằng AutoLisp, làm thế nào detect giá trị lineweight của một lớp đang tồn tại?
Ví dụ cho Layer "0" được kết quả như sau:


(entget (tblobjname "layer" "0"))

((-1 . <Entity name: -164380>)
(0 . "LAYER")
(330 . <Entity name: -1643f0>)
(5 . "10")
(100 . "AcDbSymbolTableRecord")
(100 . "AcDbLayerTableRecord")
(2 . "0")
(70 . 0)
(62 . 7)
(6 . "Continuous")
(290 . 1)
(370 . 5)
(390 . <Entity name: -164388>)
(347 . <Entity name: -164100>)
)

Chẳng thấy lineweight ở đâu hết các bác ạ!


  • 0

#8 Doan Van Ha

Doan Van Ha

    biết lệnh adcenter

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

Đã gửi 21 August 2013 - 04:18 PM

Từ DXF 370 mà suy ra lineweight bạn ạ.

Tham khảo code:

(cons 370 (if lineWeight (fix (* 100 lineWeight)) -3))


  • 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.


#9 Polyline

Polyline

    biết lệnh mirror

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

Đã gửi 21 August 2013 - 04:57 PM

cám ơn bác, mình tìm ra rồi. Nó là mã 370 với danh sách như sau:
-3 = Default
-2 = ByBlock
-1 = ByLayer
0 = 0.00mm
5 = 0.05mm
9 = 0.09mm
13 = 0.13mm
15 = 0.15mm
18 = 0.18mm
20 = 0.20mm
25 = 0.25mm
30 = 0.30mm
35 = 0.35mm
40 = 0.40mm
50 = 0.50mm
53 = 0.53mm
60 = 0.60mm
70 = 0.70mm
80 = 0.80mm
90 = 0.90mm
100 = 1.00mm
106 = 1.06mm
120 = 1.20mm
140 = 1.40mm
158 = 1.58mm
200 = 2.00mm
211 = 2.11mm

Nó chỉ chấp nhận giá trị trong bảng trên mà không cho phép các giá trị trung gian.


  • 0