Đến nội dung


Hình ảnh
- - - - -

[Yeucau] Lisp Chỉnh Nét Đứt Trong Cad


  • Please log in to reply
5 replies to this topic

#1 pdhuyxn2

pdhuyxn2

    biết vẽ circle

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

Đã gửi 09 June 2016 - 10:04 AM

Nhờ Các Bác Trên Diễn Đàn Viết giúp cho

lisp Thay đổi giá trị khoảng cách của nét đứt (linetype) :

 

a) Thay đổi giá trị với nét đứt được chọn.

B) Thay đổi giá trị khoảng cách nét đứt của toàn bản vẽ mà ta chọn vào nó (VD chọn vào nét hiddn  khi thay đổi K/C thì toàn bộ nét hiddn của toàn bản vẽ được thay đổi K/C và các nét khác vần giữ nguyên) .

Cám Ơn Các Bác!


Bài viết đã được chỉnh sửa nội dung bởi pdhuyxn2: 09 June 2016 - 10:41 AM

  • 0

#2 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 665 Bài viết
Điểm đánh giá: 312 (khá)

Đã gửi 10 June 2016 - 09:25 AM


  • Members
  • bullet_black.pngbullet_black.png
  • 28 Bài viết
Điểm đánh giá: -2(bình thường)
 

Đã gửi Hôm qua, 10:04 AM

Nhờ Các Bác Trên Diễn Đàn Viết Giúp Cho Em
lisp Thay đổi giá trị khoảng cách của nét đứt (linetype) :[/size]
Lisp sử dụng như sau:
a) Thay đổi giá trị với nét đứt được chọn thì nét đứt có thể co hoặc giãn khoảng cách nét đứt được chọn đó.[/size]
B) Thay đổi giá trị khoảng cách nét đứt của 1 nét chọn thì toàn bản vẽ mà có nét đó [/size] có thể có hoặc giãn khoảng cách[/size]  (VD chọn vào nét hiddn  khi thay đổi K/C thì toàn bộ nét hiddn của toàn bản vẽ được thay đổi K/C và các nét khác vần giữ nguyên) .[/size]
Cám Ơn Các Bác![/size]

Thử cái này xem:
 
(defun c:cls  (/ ent i lsc lty obj ss)
 (vl-load-com)
 (if (setq ss (ssget "_+.:E:S" '((0 . "*LINE,ARC,CIRCLE,ELLIPSE"))))
  (progn (setq ent (ssname ss 0)
               obj (vlax-ename->vla-object ent)
               lty (vla-get-linetype obj)
               lsc (vla-get-linetypescale obj))
         (setq lsc (cond ((getreal (strcat "\nLinetype-Scale <" (rtos lsc 2 2) ">: ")))
                         (lsc)))
         (if (setq ss (ssget "_X" (list (cons 0 "*LINE,ARC,CIRCLE,ELLIPSE") (cons 6 lty))))
          (repeat (setq i (sslength ss))
           (setq ent (ssname ss (setq i (1- i)))
                 obj (vlax-ename->vla-object ent))
           (vla-put-linetypescale obj lsc)))))
 (princ))

  • 0

#3 pdhuyxn2

pdhuyxn2

    biết vẽ circle

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

Đã gửi 16 June 2016 - 09:30 AM

Cám ơn Bác đã giúp đỡ.

phần   B) oke rồi Bác ạ

Bác bổ sung cho em thêm 1 lệnh nữa 

Trong bản vẽ có nhiều đượng hiddln 

a) Thay đổi giá trị với nét đứt được chọn (được qét) thì nét đứt có thể co hoặc giãn khoảng cách nét đứt được chọn đó.

Em hay dùng Ctrl +1 sau đó chọn nét cần chỉnh và vào lineType cale để chỉnh co giãn khoảng cách nhưng nó nhiều thao tác quá. Nhờ Các Bác giúp đỡ bằng Lisp để đơn giản hóa và cũng thuận tiện hơn trong công Việc Mong các bác Giúp đỡ với...


  • 0

#4 Danh Cong

Danh Cong

    biết lệnh linetype

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

Đã gửi 16 June 2016 - 10:04 AM

Có rất nhiều cách để thực hiện theo yêu cầu của bạn mà ko cần sự hỗ trợ của lisp  chứ nhỉ. Mình đa số dùng cách này.

1. Chọn nhiều đối tượng bằng cách sử dụng lệnh "Fi" ... Dựa và lệnh này, bạn lọc ra được loại đường cần thay đổi Scale nét .

 

2. Nếu bạn đa số vẽ trên Model và in trên Layout thì nên chỉnh thông số qua hộp thoại "Line Type". Gõ lệnh LineType là ra. Chỉnh thông số Global Scale Factor , cho giá trị 5. bạn in ra thì tất cả các nét thuộc loại nào đều in ra ngon lành hết :)


  • 0

             ***  Vô lo - Vô nghĩ - Vô sầu hận  ***

***  Chẳng thương - Chẳng giận - Chẳng đau lòng  ***


#5 pdhuyxn2

pdhuyxn2

    biết vẽ circle

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

Đã gửi 23 June 2016 - 11:14 AM

Cám ơn Bạn! Có nhiều cách giãn khoảng cách nét đứt, nhưng dùng lisp sẽ giảm bớt được các thao tác và nhanh hơn Bạn Ạ.

Như vậy Mình mới nhờ Các Bác giỏi về Lisp giúp đỡ Mình.


  • 0

#6 quocmanh04tt

quocmanh04tt

    biết lệnh imageclip

  • Members
  • PipPipPipPipPipPipPip
  • 665 Bài viết
Điểm đánh giá: 312 (khá)

Đã gửi 23 June 2016 - 03:17 PM

Thấy bạn mất công cả tuần xóa đi, post lại mấy lần. Sao không bỏ thời gian nghiên cứu 1 tý về LISP (nhanh thì 1h lâu thì 1 ngày) có thể làm được lệnh thế này: (defun c:tt nil (command "_.change" (ssget) "" "P" "S"))


  • 0