Đến nội dung


Hình ảnh
* * * - - 8 Bình chọn

Viết lisp theo yêu cầu [phần 2]


  • Chủ đề bị khóa Chủ đề bị khóa
3783 replies to this topic

#3021 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 14 January 2011 - 09:24 AM

Bình thường trước khi thao tác đã chuyển rồi bạn ạ.Cái này đã có trên 4room,chắc bạn chưa tìm hoặc tìm không thấy, mình post lại giúp bạn đây
Dim : mình đang đặt lệnh tắt là

Layer : 08-dim


;free lisp from cadviet.com @ ....(srr vi e quen tac gia, hinh nhu bac bach)
;CAC LENH VE DIMENSION, tra ve layer hien hanh

(defun c:d() (VeDim "d"))
(defun c:dc() (VeDim "dc"))
(defun c:da() (VeDim "da"))
(defun c:qd() (VeDim "qd"))
(defun c:dg() (Vedim "dg")
(defun VeDim(input / ov vl)
(defun *error* (msg)
(if ov (mapcar 'setvar vl ov)); reset Sys Vars
(if (not(wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
(princ (strcat "\n** Error: " msg " **")))
(princ))

(setq vl '("clayer" "cmdecho") ; Sys Var list
ov (mapcar 'getvar vl)) ; Get Old values
(setvar "cmdecho" 0)
(if (tblsearch "layer" "08-dim")
(setvar "clayer" "08-dim")
(command "-layer" "M" "08-dim" "" ) )
(setvar "cmdecho" 1)
(cond
((= input "d")(command "_dimlinear"))
((= input "da")(command "_dimaligned"))
((= input "dc")(command "_dimcontinue"))
((= input "dg")(command "_dimangular"))
((= input "qd")(command "qdim"))
)
(while (= (getvar "CMDACTIVE") 1) (command pause))
(mapcar 'setvar vl ov) ; reset Sys Vars
(princ)
)
;;;;;;;

Hatch thì mình để là 00-09hatch, bạn cứ tự sửa theo ý bạn nhé
;;;;;;;Hatch lay gia tri mac dinh
;;;;;;;;;;;;;;;;sau do tra ve layer hien hanh
;free lisp from cadviet.com @ ...(srr vi e quen tac gia)
(defun c:h(/ ov vl)
(setvar "hpname" "ansi31")
  (setq vl '("clayer" "cmdecho"); Sys Var list
    ov (mapcar 'getvar vl)); Get Old values
  (setvar "cmdecho" 1)
  (if (tblsearch "layer" "00-09hatch")
    (setvar "CLAYER" "00-09hatch")
    (command "-layer" "M" "00-09hatch" "" ) )
  (initdia)
  (command "hatch")
  (while (< 0 (getvar "CMDACTIVE"))
    (command pause)
  )
  (vl-cmdf "change" "L" "" "P" "LA" "00-09hatch" "")
  (mapcar 'setvar vl ov); reset Sys Vars
  (princ)
  )

Tác giả của Code đầu là của anh gia bach
Code thứ 2 là của Tue_NV

2 code trên có thể sử dụng Reactor để quản lý
Các bạn đọc thêm bài viết này nhé :
Ứng dụng REACTOR trong quản lý bản vẽ theo layer
  • 0

#3022 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 14 January 2011 - 09:37 AM

Tue_NV nghĩ rằng anh Duy có thể tự xây dựng code này được
1. Chọn tập hợp text -> Dùng hàm ssget (Gọi là tập ss1) -> Chuyển tập ss1 sang layer2
2. Chọn các text đánh dấu -> Dùng hàm ssget để chọn (Gọi là tập ss2)
3. Convert ss2 thành List ename (Gọi là List L)
4. Sử dụng hàm ssmemb kiểm tra từng phần tử trong list L có thuộc ss1 hay không?
+ Nếu phần tử trong list L thuộc ss1 thì chuyển nó sang layer3.

Ơ, em thấy bác Duy nói ngay từ đầu là chọn ss2 thuộc ss1 rồi đấy thây ạ ? Bước 3,4 có phải là để tổng quát trong trườg hợp ngơời dùng chọn ra cả ngoài k ạ ?
  • 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


#3023 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 14 January 2011 - 09:57 AM

Ơ, em thấy bác Duy nói ngay từ đầu là chọn ss2 thuộc ss1 rồi đấy thây ạ ? Bước 3,4 có phải là để tổng quát trong trườg hợp ngơời dùng chọn ra cả ngoài k ạ ?

đúng rồi. Để chắc chắn rằng các phần tử ename của ss2 luôn thuộc tập chọn ss1
  • 0

#3024 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 14 January 2011 - 10:28 AM

Mình nhờ mọi người viết giúp đoạn lisp sau:
-Hỏi chọn tập hợp text.
-Hỏi chọn các text đánh dấu. (các text này nằm trong tập hợp trên).
-Chuyễn toàn bộ tập hợp trên sang layer2, các text đánh dấu sang layer3.

Tue_NV nghĩ rằng anh Duy có thể tự xây dựng code này được
1. Chọn tập hợp text -> Dùng hàm ssget (Gọi là tập ss1) -> Chuyển tập ss1 sang layer2
2. Chọn các text đánh dấu -> Dùng hàm ssget để chọn (Gọi là tập ss2)
3. Convert ss2 thành List ename (Gọi là List L)
4. Sử dụng hàm ssmemb kiểm tra từng phần tử trong list L có thuộc ss1 hay không?
+ Nếu phần tử trong list L thuộc ss1 thì chuyển nó sang layer3.

Mình hiểu ý của duy782006 là :
1-Hỏi chọn tập hợp text.
2-Hỏi chọn các text đánh dấu. (các text này nằm trong tập hợp trên).
3-Chuyễn các text đánh dấu sang layer3 và các ph/tử còn lại của buớc 1 sang layer2,

Gọi ss1 là tập hợp chọn ở buớc 1
Gọi ss2 là tập hợp chọn ở buớc 2
Duyệt qua các ent của ss2 :
- nếu ent thuộc ss1 (ssmemb ent ss1):
+ chuyển ent qua layer3
+ xóa ent này khỏi tập ss1 (ssdel ent ss1)
Sau đó chuyển các ph/tử của ss1 sang layer2 (ss1 hiện giờ đã xóa các p/tử thuộc ss2).

PS: thao tác của Tue_NV cũng cho cùng kết quả, nhưng có 1 vài đối tuợng bị "chuyển nhà" 2 lần.

Bài viết đã được chỉnh sửa nội dung bởi gia_bach: 14 January 2011 - 12:29 PM

  • 1

#3025 shitty

shitty

    biết zoom

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

Đã gửi 14 January 2011 - 12:26 PM

Bình thường trước khi thao tác đã chuyển rồi bạn ạ.Cái này đã có trên 4room,chắc bạn chưa tìm hoặc tìm không thấy, mình post lại giúp bạn đây
Dim : mình đang đặt lệnh tắt là

Layer : 08-dim


;free lisp from cadviet.com @ ....(srr vi e quen tac gia, hinh nhu bac bach)
;CAC LENH VE DIMENSION, tra ve layer hien hanh

(defun c:d() (VeDim "d"))
(defun c:dc() (VeDim "dc"))
(defun c:da() (VeDim "da"))
(defun c:qd() (VeDim "qd"))
(defun c:dg() (Vedim "dg")
(defun VeDim(input / ov vl)
(defun *error* (msg)
(if ov (mapcar 'setvar vl ov)); reset Sys Vars
(if (not(wcmatch (strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
(princ (strcat "\n** Error: " msg " **")))
(princ))

(setq vl '("clayer" "cmdecho") ; Sys Var list
ov (mapcar 'getvar vl)) ; Get Old values
(setvar "cmdecho" 0)
(if (tblsearch "layer" "08-dim")
(setvar "clayer" "08-dim")
(command "-layer" "M" "08-dim" "" ) )
(setvar "cmdecho" 1)
(cond
((= input "d")(command "_dimlinear"))
((= input "da")(command "_dimaligned"))
((= input "dc")(command "_dimcontinue"))
((= input "dg")(command "_dimangular"))
((= input "qd")(command "qdim"))
)
(while (= (getvar "CMDACTIVE") 1) (command pause))
(mapcar 'setvar vl ov) ; reset Sys Vars
(princ)
)
;;;;;;;

Hatch thì mình để là 00-09hatch, bạn cứ tự sửa theo ý bạn nhé
;;;;;;;Hatch lay gia tri mac dinh
;;;;;;;;;;;;;;;;sau do tra ve layer hien hanh
;free lisp from cadviet.com @ ...(srr vi e quen tac gia)
(defun c:h(/ ov vl)
(setvar "hpname" "ansi31")
  (setq vl '("clayer" "cmdecho"); Sys Var list
    ov (mapcar 'getvar vl)); Get Old values
  (setvar "cmdecho" 1)
  (if (tblsearch "layer" "00-09hatch")
    (setvar "CLAYER" "00-09hatch")
    (command "-layer" "M" "00-09hatch" "" ) )
  (initdia)
  (command "hatch")
  (while (< 0 (getvar "CMDACTIVE"))
    (command pause)
  )
  (vl-cmdf "change" "L" "" "P" "LA" "00-09hatch" "")
  (mapcar 'setvar vl ov); reset Sys Vars
  (princ)
  )



thanks bác ketxu nhiu ...nhưng e muốn dùng hatch qua lisp như sau:
;;; =========================== HATCH =================================
HATCH
(defun c:H0 () (command "Bhatch" "P" "pattern" "solid"))
(defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "300" ""))
(defun c:Hb () (command "Bhatch" "P" "pattern" "dang-01" "30" ""))
sau khi đánh lệnh hatch tường ht thì hatch sẽ tự động chuyển về layer 00-09hatch...mong bác sửa giùm e với ...Và cái lisp chuyển về layer dim hình như hok dùng dc bác ơi...e đánh lệnh d thi no chẳng hiện ra cái chi chi :).
  • 0

#3026 lephilong_gtvttp

lephilong_gtvttp

    Chưa sử dụng CAD

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

Đã gửi 14 January 2011 - 12:48 PM

Chào mọi người, mình mới làm quen với Cad, nên còn non lắm ! Mong mọi người giúp mình với! Mình muốn chia một đối tượng thành nhiều đối tượng tại các điểm giao nhau, nhưng tìm mãi mà chưa được ! Mình cũng mới tham gia diễn đàn này, nên cũng chưa đọc hết được tất cả nội dung !
  • 0

#3027 hungvq

hungvq

    Chưa sử dụng CAD

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

Đã gửi 14 January 2011 - 02:15 PM

Chào cả nhà! Các bác, các bạn các anh chị e giúp mình với.
Mình muốn xin cái lip tính diện tích nhiều hình cùng 1 lúc. Chả là mình đang làm công tác đền bù, phải nhặt ra nhà nào là nhà G1, G2... rồi tính diện tích cho từng loại để ước tính chi phí đền bù. Công việc nhặt ra loại nhà nào thì đã có lệnh "fi" để lọc rồi, còn phần tính diện tích mình đang làm thủ công là:
- "Bo" các nhà lại (ví dụ: 100 nhà thì phải làm 100 lệnh "bo")
- Sau khi "bo" tính diện tích của các nhà đó.
- Ngồi mổ cò các diện tích vào cell để tính tổng diện tích các nhà.
Ôi. mình đang hoa hêt cả mắt vì không chỉ có 1 loại nhà G1 đâu, còn G2, G3, B1, B2 .... mỗi loại lại mấy trăm nhà. Nếu mình làm như thế này thì tèo mất.
Mình cũng đã tìm hiểu qua mấy lip (của bác Duy782006; Duyanhhcm; Duyvan83...) nhưng chưa dùng được lip nào cả (hay là chưa biết cách dùng?)
Mong các tiền bối chỉ giáo giúp với!
  • 0

#3028 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 14 January 2011 - 03:28 PM

thanks bác ketxu nhiu ...nhưng e muốn dùng hatch qua lisp như sau:
;;; =========================== HATCH =================================
HATCH
(defun c:H0 () (command "Bhatch" "P" "pattern" "solid"))
(defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "300" ""))
(defun c:Hb () (command "Bhatch" "P" "pattern" "dang-01" "30" ""))
sau khi đánh lệnh hatch tường ht thì hatch sẽ tự động chuyển về layer 00-09hatch...mong bác sửa giùm e với ...Và cái lisp chuyển về layer dim hình như hok dùng dc bác ơi...e đánh lệnh d thi no chẳng hiện ra cái chi chi :).

Bạn thêm dòng này vào trong mỗi câu lệnh (command "change" "L" "" "P" "LA" "00-09hatch" "")
Ví dụ (defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "300" ""))
-> (defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "300" "") (command "change" "L" "" "P" "LA" "00-09hatch" ""))
trong đó layer 00-09hatch bạn thay bằng layer nào mà bạn muốn và layer đó phải có trong bản vẽ rồi.
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3029 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 15 January 2011 - 12:55 AM

thanks bác ketxu nhiu ...nhưng e muốn dùng hatch qua lisp như sau:
;;; =========================== HATCH =================================
HATCH
(defun c:H0 () (command "Bhatch" "P" "pattern" "solid"))
(defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "300" ""))
(defun c:Hb () (command "Bhatch" "P" "pattern" "dang-01" "30" ""))
sau khi đánh lệnh hatch tường ht thì hatch sẽ tự động chuyển về layer 00-09hatch...mong bác sửa giùm e với ...Và cái lisp chuyển về layer dim hình như hok dùng dc bác ơi...e đánh lệnh d thi no chẳng hiện ra cái chi chi :).

Phần Hatch thì Bác Tú đã hướng dẫn bên dưới rồi, bạn làm theo nhé.Còn phần dim srr vì thiếu dấu ngoặc, mình đã edit lại trực tiếp trên bài cũ r, bạn lấy lại nhé

Chào mọi người, mình mới làm quen với Cad, nên còn non lắm ! Mong mọi người giúp mình với! Mình muốn chia một đối tượng thành nhiều đối tượng tại các điểm giao nhau, nhưng tìm mãi mà chưa được ! Mình cũng mới tham gia diễn đàn này, nên cũng chưa đọc hết được tất cả nội dung !

Đối tượng của bạn là j ???Trên diễn đàn có lisp Break All anh gia_bach đã giới thiệu đó, bạn search thử xem có phù hợp với yêu cầu không

Chào cả nhà! Các bác, các bạn các anh chị e giúp mình với.
Mình muốn xin cái lip tính diện tích nhiều hình cùng 1 lúc. Chả là mình đang làm công tác đền bù, phải nhặt ra nhà nào là nhà G1, G2... rồi tính diện tích cho từng loại để ước tính chi phí đền bù. Công việc nhặt ra loại nhà nào thì đã có lệnh "fi" để lọc rồi, còn phần tính diện tích mình đang làm thủ công là:
- "Bo" các nhà lại (ví dụ: 100 nhà thì phải làm 100 lệnh "bo")
- Sau khi "bo" tính diện tích của các nhà đó.
- Ngồi mổ cò các diện tích vào cell để tính tổng diện tích các nhà.
Ôi. mình đang hoa hêt cả mắt vì không chỉ có 1 loại nhà G1 đâu, còn G2, G3, B1, B2 .... mỗi loại lại mấy trăm nhà. Nếu mình làm như thế này thì tèo mất.
Mình cũng đã tìm hiểu qua mấy lip (của bác Duy782006; Duyanhhcm; Duyvan83...) nhưng chưa dùng được lip nào cả (hay là chưa biết cách dùng?)
Mong các tiền bối chỉ giáo giúp với!

Mình vẫn dùng có thấy sao đâu nhỉ ^^ Đoạn lisp này của bác nào vào confirm lại giúp e với.Ngày xưa cứ cặm cụi down,giờ hok nhớ của ai để hỏi nữa :) E Dùng Cad08 thì không còn phần định chiều cao text trong lệnh text nữa, mà nó đi kèm theo Style, nên phải sửa lại trong các hàm tạo text bằng command ^^ Có lẽ nên chuyển sang entmake thì hay hơn :) Nhưng tạm thời cứ chữa cháy để bạn ấy dùng đã


;; free lisp from cadviet.com
;; free lisp from cadviet.com

;Tinh Dt co mien khoe rong ben trong va lap bang
(defun c:dt2()
(setvar "cmdecho" 0)
(command "undo" "begin")
(setq lacol (getvar "CEColor"))
(setq ladin (getvar "dimzin"))
(setq laos (getvar "osmode"))
(if (not tl) (setq tl 1))
(if (not h) (setq h 1))
(setq tl1 (getreal (strcat "\nty le ban ve < 1/" (rtos tl 2 0) " >: 1/"))
caot1 (getreal (strcat "\nCao text < " (rtos h 2 2) " >: ")))
(if tl1 (setq tl tl1))
(if caot1 (setq h caot1))
(setq k 0 tdt 0)

(setvar "dimzin" 0)
(setvar "OSMODE" 0)
(setq PT (getpoint "\nChon diem xuat bang thong ke dien tich (mep trai):"))
(setq P1 (list (+ (car PT)(* 6 h)) (cadr PT))
P2 (list (+ (car PT)(* 22 h)) (cadr PT))
P3 (list (car PT) (- (cadr PT)(* 3 h)))
P4 (list (car P1) (cadr P3))
P5 (list (car P2) (cadr P3))
P6 (list (+ (car PT)(* 11 h)) (+ (cadr PT)(* 2 h)))
P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
);setq
(command "pline" PT P2 P5 P3 "C"
"pline" P1 P4 ""
"text" "m" P6 (* 1.2 h) 0 "Bang Thong Ke DT"
"text" "m" P7 h 0 "STT"
"text" "m" P8 h 0 "Dien tich (m2)"
);command

(setq pt1 (getpoint "\n Chon mien tinh dien tich : "))
(while (/= pt1 nil)
(command "erase" ss "")
(setq k (+ 1 k))
(command "TEXT" "m" pt1 (* 3 h) 0 (rtos k 2 0))
(setq PT (list (car P3) (cadr P3))
P1 (list (+ (car PT)(* 6 h)) (cadr PT))
P2 (list (+ (car PT)(* 22 h)) (cadr PT))
P3 (list (car PT) (- (cadr PT)(* 3 h)))
P4 (list (car P1) (cadr P3))
P5 (list (car P2) (cadr P3))
P7 (list (+ (car PT)(* 3 h)) (- (cadr PT)(* 1.5 h)))
P8 (list (+ (car PT)(* 14 h)) (- (cadr PT)(* 1.5 h)))
P9 (list (car PT) (- (cadr P3)(* 3 h)))
P10 (list (car P1) (cadr P9))
P11 (list (car P2) (cadr P9))
P12 (list (car P7) (- (cadr P3)(* 1.5 h)))
P13 (list (car P8) (cadr P12))
);setq
(setq frome (entlast));; chon doi tuong cuoi cung truoc khi boundary
(command "cecolor"4 "-boundary" pt1 "");; boundary
(setq toe (entlast));; chon doi tuong cuoi cung sau khi boundary
(setq cur frome ss (ssadd) S 0)
(while (not (eq cur toe));; chon cac doi tuong tu frome den toe
(setq cur (entnext cur) ss (ssadd cur ss))
(command "area" "S" "O" ss "" "")
(setq dt (getvar "area") S (+ S dt))
);while
(command "area" "A" "O" "L" "" "")
(setq dt (getvar "area"))
(setq S (* (+ S (* dt 2)) tl (/ tl 500 500)) tdt (+ s tdt))
(setvar "CEColor" lacol)
(command "pline" PT P2 P5 P3 "C"
"pline" P1 P4 ""
"text" "m" P7 h 0 (rtos k 2 0)
"text" "m" P8 h 0 (rtos s 2 2))
(setq pt1 (getpoint (strcat "\nTong dien tich = " (rtos tdt 2 3) "m2. chon mien do tiep theo...")))
);while
(command "erase" ss "")
(setq ss nil)
(setvar "DIMZIN" ladin)
(command "pline" P3 P9 P11 P5 "C"
"pline" P10 P4 ""
"text" "m" P12 h 0 "Tong"
"text" "m" P13 h 0 (rtos tdt 2 2)
);command
(setvar "OSMODE" laos)
(command "undo" "end")
(setvar "cmdecho" 1)
)


  • 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


#3030 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 15 January 2011 - 10:44 AM

Chào bạn Truongthanh,
Hề hề hề,
Của bạn đây, hy vọng lần này bạn sẽ hài lòng.


;tinh cao do cong
(defun C:cdc (/ s1 L1 i1 txt i n k m t1 t2 t3 m1 s2 p2 p3 p4 p5 p6 )
;;;;;(setq s1 (getreal "\nCAO DO DAY CONG DIEM DAU: "))
;;;;;(setq L1 (getreal "\nCHIEU DAI CONG: "))
;;;;;(setq i1 (getreal "\nDO DOC CONG: "))
(setq s1 (atof (cdr (assoc 1 (entget (car (entsel "\n Chon text cao do day cong diem dau")))))))
(setq txt (cdr (assoc 1 (entget (car (entsel "\n Chon text chuan " )))))
i 1
n (strlen txt)
k nil
)
(while (<= i n)
(setq kt (substr txt i 1))
(if (= kt "-")
(progn
(setq k i
i n)
)
)
(setq i (1+ i))
)
(if k
(progn
(setq t1 (substr txt 1 (- k 2))
t2 (substr txt (+ k 3) n)
)
(setq n (strlen t2)
i 1
m nil
)
(while (<= i n)
(setq kt (substr t2 i 1))
(if (= kt "-")
(progn
(setq m i
i n)
)
)
(setq i (1+ i))
)
(if m
(progn
(setq t3 (substr t2 (+ m 3) n))
(setq t2 (substr t2 1 (- m 2)))
)
)
)
)
(setq L1 (atof t2)
i1 ( / (atof t3) 1000)
)
(setq m1 (getreal "\nNHAP CAO DO THIET KE DIEM: "))
(setq s2 (- s1 (* L1 i1)))
(setq p2 (getpoint "\nchon diem cuoi doan cong"))
(setq p3 (getpoint "\nchon diem dat text"))
(if (>= (car p3) (car p2))
(progn
(setq p4 (polar p3 (/ pi 4) 1))
(setq p5 (polar p3 0 6))
(setq p6 (polar p3 (/ (- 0 pi) 4) 1))
(setvar "snapmode" 0)
(setvar "osmode" 0)
(command ".text" p4 "" 0 (strcat (RTOS S2 2 2))
".text" "j" "tl" p6 "" "" (strcat (RTOS m1 2 2))
".pline" p2 "w" 0.1 0.1 p3 p5 "" )
)
(progn
(setq p4 (polar p3 (* (/ pi 4) 3) 1))
(setq p5 (polar p3 pi 6))
(setq p6 (polar p3 (* (/ (- 0 pi) 4) 3) 1))
(setvar "snapmode" 0)
(setvar "osmode" 0)
(command ".text" "j" "r" p4 "" 0 (strcat (RTOS S2 2 2))
".text" "j" "tr" p6 "" "" (strcat (RTOS m1 2 2))
".pline" p2 "w" 0.1 0.1 p3 p5 "" )
)
)

(setvar "snapmode" 0)
(setvar "osmode" 16383)

(princ)
)

Hề hề hề,...

Anh Bình ởi! Nhờ anh sửa cái này dùm em lại 1 chút! Cái chỗ "NHAP CAO DO THIET KE DIEM:" nhờ anh sửa lại là "CHON CAO DO THIET KE DIEM" dùm em lun anh!Em đã có sẵn text trên màn hình rồi!Thanks anh nhiều!Làm phiền anh tí nữa nhé! Chứ cài này em xài OK rùi!
  • 0

#3031 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 15 January 2011 - 10:53 AM

Nhờ anh em sửa dùm em cái LISP tra cứu tọa độ điểm này dùm em với:
1/ Em kéo qua bên trái thì chữ nhảy qua bên phải, pline kẻ ngang phân cách X và Y lại nhảy qua bên trái.
2/ Pline kẻ ngang phân cách X và Y ngắn, trong khi X và Y thì dài quá, giờ làm sao X và y dài bao nhiêu thì Pline kẻ dài bấy nhiu.
3/ Sau khi lisp thực hiện xong trả lại bắt điem như ban đầu mình đang mặc định trong CAD (hiện nay là thực hiện xong nó tắt bắt đểm hết)
4/Và sao lisp thực hiện được mà trên dòng command vẫn hiện chữ "Unknown command "TCD"
Xin chân thành cảm ơn anh em.
Em gửi link nhờ anh em giúp dùm.
http://www.cadviet.c...toa_do_diem.lsp
  • 0

#3032 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 15 January 2011 - 10:56 AM

Mình vẫn dùng có thấy sao đâu nhỉ ^^ Đoạn lisp này của bác nào vào confirm lại giúp e với.Ngày xưa cứ cặm cụi down,giờ hok nhớ của ai để hỏi nữa :) E Dùng Cad08 thì không còn phần định chiều cao text trong lệnh text nữa, mà nó đi kèm theo Style, nên phải sửa lại trong các hàm tạo text bằng command ^^ Có lẽ nên chuyển sang entmake thì hay hơn :) Nhưng tạm thời cứ chữa cháy để bạn ấy dùng đã

Cái này ngày trước anh cũng bị mắc một vài lần rồi nên có kinh nghiệm chút.
Khi style của text đã có chiều cao rồi thì khi dùng command text không nhập được chiều cao chữ. Còn khi style của text có chiều cao = 0 thì khi dùng command text có thêm dòng nhập chiều cao chữ.
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3033 shitty

shitty

    biết zoom

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

Đã gửi 15 January 2011 - 11:02 AM

Bạn thêm dòng này vào trong mỗi câu lệnh (command "change" "L" "" "P" "LA" "00-09hatch" "")
Ví dụ (defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "300" ""))
-> (defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "300" "") (command "change" "L" "" "P" "LA" "00-09hatch" ""))
trong đó layer 00-09hatch bạn thay bằng layer nào mà bạn muốn và layer đó phải có trong bản vẽ rồi.


lisp hatch bác Tú sửa giúp e hok dùng dc roi,hatch vẫn để ở layer hiện hành.ko phai layer 00-09hatch...mong bác sửa giúp e với..cảm ơn bác trước :X
  • 0

#3034 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 15 January 2011 - 11:22 AM

lisp hatch bác Tú sửa giúp e hok dùng dc roi,hatch vẫn để ở layer hiện hành.ko phai layer 00-09hatch...mong bác sửa giúp e với..cảm ơn bác trước :X

Xin lỗi bạn dùng lại dòng này:
(defun c:Ht () (command "Bhatch" "P" "pattern" "ANSI31" "300" "" pause "" "change" "L" "" "P" "LA" "00-09hatch" ""))
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3035 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 15 January 2011 - 11:41 AM

lisp hatch bác Tú sửa giúp e hok dùng dc roi,hatch vẫn để ở layer hiện hành.ko phai layer 00-09hatch...mong bác sửa giúp e với..cảm ơn bác trước :X

Do lệnh hatch trong lisp ban đầu của bạn còn thiếu thông số chọn điểm trong vùng Hatch đó mà
Bạn sửa thành như thế này nhé :
(defun c:Ht ()
(command "-Bhatch" "P" "ANSI31" "300" "")
(while (< 0 (getvar "CMDACTIVE")) (command pause));end while
(vl-cmdf "change" "L" "" "P" "LA" "00-09hatch" "")
)

Góp ý với bạn : ngoài tiếng tks kèm theo lời yêu cầu,bạn có thể dùng nút thanks để động viên hoặc để báo cho người giúp bạn biết là bạn đã ngó qua cái phần người ta đáp ứng nhu cầu của bạn.:")
  • 2

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


#3036 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 15 January 2011 - 11:51 AM

Do lệnh hatch trong lisp ban đầu của bạn còn thiếu thông số chọn điểm trong vùng Hatch đó mà
Bạn sửa thành như thế này nhé :

(defun c:Ht ()
(command "-Bhatch" "P" "ANSI31" "300" "")
(while (< 0 (getvar "CMDACTIVE")) (command pause));end while
(vl-cmdf "change" "L" "" "P" "LA" "00-09hatch" "")
)

Góp ý với bạn : ngoài tiếng tks kèm theo lời yêu cầu,bạn có thể dùng nút thanks để động viên hoặc để báo cho người giúp bạn biết là bạn đã ngó qua cái phần người ta đáp ứng nhu cầu của bạn.:")

nhanh tay quá vừa đang dịnh sửa lại dịnh post thì tháy cái giống y chang của mình. Đúng là hậu sinh khả uý.
  • 1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#3037 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 15 January 2011 - 01:00 PM

Hề hề, e để màn hình reply rồi ngồi type code (copy paste thì đúng hơn ^^),xong post lên thì bác cũng đã giả nhời tự bao giờ..Cái này gọi là tư tưởng nhớn gặp nhau ^^
  • 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


#3038 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 15 January 2011 - 04:13 PM

Nhờ anh em sửa dùm em cái LISP tra cứu tọa độ điểm này dùm em với:
1/ Em kéo qua bên trái thì chữ nhảy qua bên phải, pline kẻ ngang phân cách X và Y lại nhảy qua bên trái.
2/ Pline kẻ ngang phân cách X và Y ngắn, trong khi X và Y thì dài quá, giờ làm sao X và y dài bao nhiêu thì Pline kẻ dài bấy nhiu.
3/ Sau khi lisp thực hiện xong trả lại bắt điem như ban đầu mình đang mặc định trong CAD (hiện nay là thực hiện xong nó tắt bắt đểm hết)
4/Và sao lisp thực hiện được mà trên dòng command vẫn hiện chữ "Unknown command "TCD"
Xin chân thành cảm ơn anh em.
Em gửi link nhờ anh em giúp dùm.
http://www.cadviet.c...toa_do_diem.lsp

Nhờ anh em giúp dùm mình với!
  • 0

#3039 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 15 January 2011 - 05:10 PM

Nhờ anh em giúp dùm mình với!

Vì trong lisp này của bạn phần vẽ Pline chẳng liên quan gì đến phần vết text cả, vì thế mới có chuyện nó hỏi điểm cuối để chọn làm điểm cuối Pline, còn vẽ text thì lại theo điểm đặt text, Bạn có thể làm 1 file cad vẽ rõ mục đích của bạn không? Nó có giống như 1 leader ghi chú tọa độ k ??
  • 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


#3040 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 15 January 2011 - 05:26 PM

Vì trong lisp này của bạn phần vẽ Pline chẳng liên quan gì đến phần vết text cả, vì thế mới có chuyện nó hỏi điểm cuối để chọn làm điểm cuối Pline, còn vẽ text thì lại theo điểm đặt text, Bạn có thể làm 1 file cad vẽ rõ mục đích của bạn không? Nó có giống như 1 leader ghi chú tọa độ k ??

Dạ đúng ạ! Nó giống như leader ghi chú tọa độ 1 điểm (X, Y) ra màn hình đó ah!
Nhờ bạn giúp dùm!
  • 0